registerReceiver for Broadcast only if it's not already registered?

android

Solution

There isn't a way of finding out — you should only be calling `registerReceiver` once, most likely upon the creation of your service.

You need to keep a reference to the `BroadcastReceiver` too for when you call `unregisterService` (`onDestroy()` is the natural place for it), otherwise the system will warn you about leaking broadcast receivers and get angry and possibly shout at you.

Problem

I have a snippet of code that I'm calling from a service: ``` context.registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { try { WifiManager mWm = (WifiManager) context .getSystemService(Context.WIFI_SERVICE); ret = mWm.isWifiEnabled(); // DO MORE STUFF HERE } catch (Exception e) { } } }, new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION)); ``` What I would like is a way to check and make sure that the `registerReceiver` isn't already listening before it calls it again. Is this possible? For example if my snippet of code is in a method, and I call the method 10 times, right now the `onReceive` method appears to run 10 times.

Original source