Are you missing the unregisterReceiver () call? in android

I get the following error

"You are missing a call to unregister a recipient"

android.app.IntentReceiverLeaked: Activity com.apps.activities.MainActivity has leaked IntentReceiver com.wwhere.fragment.MainRecyclerViewFragment$1@44d50ba8 that was originally registered here. Are you missing a call to unregisterReceiver()? at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:809) at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:610) at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1478) at android.app.ContextImpl.registerReceiver(ContextImpl.java:1458) at android.app.ContextImpl.registerReceiver(ContextImpl.java:1452) at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:467) 

My code

 private BroadcastReceiver actionConversation = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { setAdapter(); } }; private void registerBroadCasts() { IntentFilter intentConnection = new IntentFilter( Constants.CONVERSATION_SCREEN); getActivity().registerReceiver(actionConversation, intentConnection); } 

And I call registerBroadCasts () in the onCreate method.

+6
source share
1 answer

I assume that you are using GCM in your application. In the case when you register the device to GCM , write the following code:

 @Override public void onDestroy() { // TODO Auto-generated method stub try{ if(mHandleMessageReceiver!=null) unregisterReceiver(mHandleMessageReceiver); }catch(Exception e) { } super.onDestroy(); } 

where mHandleMessageReceiver is an instance of BroadcastReceiver .

+9
source

Source: https://habr.com/ru/post/987322/


All Articles