I have onResume() and onDestroy() methods in my MainActivity. How can I detroy the registerReceiver in the onResume() method. I tried to assign it to variable but without success.
@Override
protected void onResume() {
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
check_wifi_available();
}
}, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
@Override
protected void onDestroy() {
unregisterReceiver();
super.onDestroy();
}
From the android documentation:
If registering a receiver in your Activity.onResume() implementation, you should unregister it in Activity.onPause(). (You won't receive intents when paused, and this will cut down on unnecessary system overhead)
Define your receiver as a class variable like this:
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
check_wifi_available();
}
}
Then implements the onPause() / onResume() methods like this:
@Override
protected void onResume() {
super.onResume();
registerReceiver(mReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(mReceiver);
}
No need to unregister it in onDestroy() method.