मेरे पास क्रॉडसोर्सिंग के आधार पर मेरे शहर में बसों के स्थान को ट्रैक करने के लिए ट्रैकिंग सेवा घटक है। TrackingService पृष्ठभूमि में काम कर रहा है, तो डेटा सर्वर पर प्रेषित किया जाता है। मेरे पास बसों का स्थान प्रदर्शित करने के लिए एक नक्शा गतिविधि है, जो उपयोगकर्ता मुख्य गतिविधि (फ़िल्टर के रूप में) में चयनित है।java.lang.IllegalArgumentException: रिसीवर पंजीकृत नहीं है
ऐप लॉन्च होने पर पृष्ठभूमि ट्रैकिंग सेवा मुख्य गतिविधि में प्रारंभ की जाती है।
मैं map
को नीचे दिए गए कोड में ब्रॉडकास्ट रिसीवर की सहायता से अद्यतन लोकोशन के बारे में गतिविधि को नोटिफ़िक कर रहा हूं। डेटा को मानचित्र गतिविधि में पुनर्प्राप्त किया जा रहा है लेकिन मुझे अपने bReceiver
को अनधिकृत करने में समस्या का सामना करना पड़ रहा है। जब मैं ऐप पृष्ठभूमि में जाता हूं या जब उपयोगकर्ता बैक बटन दबाता है तो प्रसारण को अनधिकृत करना चाहता हूं लेकिन मुझे नीचे त्रुटि मिल रही है:
मैं इसे कैसे ठीक कर सकता हूं?
त्रुटि:
08-27 22:43:04.594: E/AndroidRuntime(19588): FATAL EXCEPTION: main
08-27 22:43:04.594: E/AndroidRuntime(19588): Process: com.bustracker, PID: 19588
08-27 22:43:04.594: E/AndroidRuntime(19588): java.lang.RuntimeException: Unable to stop activity {com.bustracker/com.bustracker.Map}: java.lang.IllegalArgumentException: Receiver not registered: [email protected]
08-27 22:43:04.594: E/AndroidRuntime(19588): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4156)
08-27 22:43:04.594: E/AndroidRuntime(19588): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4219)
08-27 22:43:04.594: E/AndroidRuntime(19588): at android.app.ActivityThread.access$1500(ActivityThread.java:177)
08-27 22:43:04.594: E/AndroidRuntime(19588): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1502)
08-27 22:43:04.594: E/AndroidRuntime(19588): at android.os.Handler.dispatchMessage(Handler.java:102)
08-27 22:43:04.594: E/AndroidRuntime(19588): at android.os.Looper.loop(Looper.java:145)
08-27 22:43:04.594: E/AndroidRuntime(19588): at android.app.ActivityThread.main(ActivityThread.java:5944)
08-27 22:43:04.594: E/AndroidRuntime(19588): at java.lang.reflect.Method.invoke(Native Method)
08-27 22:43:04.594: E/AndroidRuntime(19588): at java.lang.reflect.Method.invoke(Method.java:372)
08-27 22:43:04.594: E/AndroidRuntime(19588): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1389)
08-27 22:43:04.594: E/AndroidRuntime(19588): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1184)
08-27 22:43:04.594: E/AndroidRuntime(19588): Caused by: java.lang.IllegalArgumentException: Receiver not registered: [email protected]
08-27 22:43:04.594: E/AndroidRuntime(19588): at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:822)
08-27 22:43:04.594: E/AndroidRuntime(19588): at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:2038)
08-27 22:43:04.594: E/AndroidRuntime(19588): at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:528)
08-27 22:43:04.594: E/AndroidRuntime(19588): at com.bustracker.Map.onStop(Map.java:418)
08-27 22:43:04.594: E/AndroidRuntime(19588): at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1275)
08-27 22:43:04.594: E/AndroidRuntime(19588): at android.app.Activity.performStop(Activity.java:6493)
08-27 22:43:04.594: E/AndroidRuntime(19588): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4151)
08-27 22:43:04.594: E/AndroidRuntime(19588): ... 10 more
TrackingService वर्ग:
public class TrackingService extends Service implements
LocationListener {
public double pLong;
public double pLat;
...
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
detectLocation();
return START_STICKY;
}
private void detectLocation() {
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30 * 1000, 0,
this);
}
@Override
public void onLocationChanged(Location location) {
if (location != null) {
pLong = location.getLongitude();
pLat = location.getLatitude();
Intent intent = new Intent(Map.RECEIVE_latLng);
intent.putExtra("location",location);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
.....
}
}
मानचित्र गतिविधि:
public class Map extends FragmentActivity implements OnMapReadyCallback {
public static final String RECEIVE_latLng = "com.bustracker.RECEIVE_latLng";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
LocalBroadcastManager bManager = LocalBroadcastManager.getInstance(this);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(RECEIVE_latLng);
bManager.registerReceiver(bReceiver, intentFilter);
}
private BroadcastReceiver bReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(RECEIVE_latLng)) {
Location location = intent.getParcelableExtra("location");
double lng = location.getLongitude();
double lat = location.getLatitude();
LatLng ll = new LatLng(lat, lng);
MarkerOptions markerOpt = new MarkerOptions().title("My Location")
.position(ll);
System.out.println("ABC map: "+ lat + " ; " + lng);
myLocatMarker = map.addMarker(markerOpt);
}
}
};
}
@Override
protected void onStop() {
super.onStop();
unregisterReceiver(bReceiver);
}
तो मैं onStart() में 'bReceiver' पंजीकृत किया है लेकिन मैं अभी भी त्रुटि हो रही है। –
@ एमआर पूछताछ क्या आप नया कोड और नया स्टैकट्रैक दिखा सकते हैं? –
धन्यवाद, उस जगह को भी नहीं मिला। मैंने अभी जवाब अपडेट किया है। मुझे अभी भी विश्वास है कि मैंने जीवन चक्र विधियों पर किए गए टिप्पणियां भी मान्य हैं, इसलिए मैं उन्हें वहां छोड़ देता हूं। –