Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to unregister receiver attached to LocalBroadcastManager?

How to unregister receiver attached to LocalBroadcastManager?

I tried

unregisterReceiver(broadcastReceiver);

but it gave me an exception

java.lang.IllegalArgumentException: Receiver not registered:

This is my code

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    init();
    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiverCancelPd, new IntentFilter(PelicanApplication.identifierCancelPd));
    LocalBroadcastManager.getInstance(this).registerReceiver(bReceiverSignOut, new IntentFilter(PelicanApplication.identifierSignOut));
    LocalBroadcastManager.getInstance(this).registerReceiver(bReceiverNearByDeliveries, new IntentFilter(PelicanApplication.identifierNBD));
}


@Override
protected void onStop() {
    super.onStop();
    unregisterReceiver(broadcastReceiverCancelPd);
    unregisterReceiver(bReceiverSignOut);
    unregisterReceiver(bReceiverNearByDeliveries);
}
like image 968
Shane Ekanayake Avatar asked Dec 11 '22 22:12

Shane Ekanayake


1 Answers

Calling unregisterReceiver() like you are is calling that method on the current Context, rather than the LocalBroadcastManager. You need to call LocalBroadcastManager.getInstance(this).unregisterReceiver();.

like image 98
Mike M. Avatar answered Mar 05 '23 07:03

Mike M.