Pergunta

Is it possible that a local (i.e. managed with LocalBroadcastManager) BroadcastReceiver leaks when the app is killed by the system?

The specific use case for which I need it is that I would like to register/unregister the BroadcastReceiver in an Activity's onCreate/onDestroy (I need the receiver to be active when the activity is not visible), but I wouldn't like to risk causing a memory leak by doing this. As I understand, if a single activity is destroyed by the system, onDestroy runs and the receiver is unregistered. What if the app is killed? Does the receiver remain around, or, being local, does it get killed along with the app?

Foi útil?

Solução

If you peek inside LocalBroadcastManager source code, you'll see it's really just a normal class ("local" as you said) with a Map connecting the various BroadcastReceiver with the corresponding List of IntentFilter.

Nothing is registered at the "system level" so NO: if the app is killed, LocalBroadcastManager class is killed with it and no leak will occur.

Outras dicas

You should absolutely unregister it in onDestroy because onDestroy doesn't mean your app is finished- just your Activity. Other Activities in your app could still be running, so that receiver would cause a leak.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top