Fuga de receptor de difusión administrada localmente?
¿Es posible que un BroadcastReceiver local (es decir, administrado con LocalBroadcastManager) se escape cuando la aplicación es eliminada por el sistema?
El caso de uso específico para el que lo necesito es que quisiera registrar / cancelar el registro de BroadcastReceiver en el onCreate / onDestroy de una actividad (necesito que el receptor esté activo cuando la actividad no es visible), pero no me gustaría correr el riesgo Causando una pérdida de memoria haciendo esto. Según entiendo, si una sola actividad es destruida por el sistema, onDestroy se ejecuta y el receptor no está registrado. ¿Qué sucede si la aplicación se cancela? ¿El receptor permanece alrededor, o, siendo local, se mata junto con la aplicación?
- Android pasa los datos de Actividad a BroadcastReceiver muestra null
- Eventos XMPP en Android
- Android IntentService no puede instanciar clase; Sin constructor vacío
- BroadcastReceiver cuando la aplicación no se está ejecutando
- Administrador de alarmas programado no funciona Android
- Registro de Receptor de Difusión en Manifiesto vs. Actividad
- Cómo crear BroadcastReceiver sin actividad
- Android OrderedBroadcast No funciona en la versión de lanzamiento
- Xamarin: BroadcastReceiver no recibe cuando la aplicación no se está ejecutando
- Difusión en contacto agregar / cambiar?
- ¿Cuándo anular el registro de BroadcastReceiver? En onPause (), onDestroy (), o onStop ()?
- El receptor de difusión de Android no funciona
- Posibilidad de establecer la prioridad BroadcastReceiver mediante programación?
Si LocalBroadcastManager
vistazo dentro del código fuente de LocalBroadcastManager
, verás que es realmente sólo una clase normal ("local", como dijiste) con un Map
conecta los distintos BroadcastReceiver
con la correspondiente List
de IntentFilter
.
Nada se registra en el "nivel del sistema" por lo que NO: si la aplicación es asesinada, la clase LocalBroadcastManager se elimina con ella y no se producirá ninguna pérdida .
Usted debe absolutamente no registrarlo en onDestroy porque onDestroy no significa que su aplicación está terminada, sólo su actividad. Otras actividades de tu aplicación podrían seguir ejecutándose, de modo que el receptor causaría una fuga.
- ¿Cómo puedo enviar desde el lado del servidor (Google App Engine, Cloud Endpoints) la información a mi cliente?
- Android: Cómo configurar una IP estática para una nueva configuración WiFi