Iniciar una actividad de notificación destruye las actividades de los padres
Tengo una aplicación con 4 actividades en la secuencia decir A-> B-> C-> D y un servicio S que se inicia por A cuando se inicia la aplicación. Ahora en una condición particular este servicio dispara una notificación que otra vez debe comenzar actividad C withing mi app y con los argumentos que C necesita generalmente de B. También para funcionar correctamente, C necesita utilizar una variable estática de la actividad A. Ésa era la configuración.
Ahora lo que sucede es cuando la notificación se dispara desde el servicio S y hago clic en él, las actividades A y B se destruyen automáticamente resultando en un cierre de fuerza (ya que mi actividad C depende de una variable estática en A ). Por qué pasó esto. He utilizado un TaskStackBuilder
para colocar la actividad de los padres de C (es decir, B ) en la pila para que el comportamiento de espalda normal me lleva de nuevo a la actividad B.
- Servicio persistente
- Implementar la devolución de llamada de Servicio a Actividad
- Java.lang.RuntimeException: WakeLock bajo-bloqueado C2DM_LIB
- Detección del dispositivo bluetooth sin conectarse a él en Android
- Mantenga el servicio de ubicación activo cuando la aplicación esté cerrada.
¿Puede alguien decirme la razón de este comportamiento. No quiero ejecutar mi Actividad C como una tarea interdependiente. Quiero que sea la misma instancia que ya está en la aplicación. Por favor, ayúdame a entender el problema aquí.
- El servicio se detiene cuando la actividad está cerrada
- Iniciar la aplicación de Android sin actividad principal e iniciar el servicio al iniciar la aplicación
- Actualizaciones de ubicación de Android en un servicio
- Comprobar constantemente el cambio de volumen en los servicios de Android
- ¿Qué ocurre cuando la actividad se bloquea?
- El número de teléfono no se muestra onCallStateChanged Android
- Cómo utilizar HdmiControlService
- No se puede obtener el historial del navegador nativo de SAMSUNG S4
-
La actividad debe ser independiente. Es peligroso que la
activity C needs to use a static variable from the activity A
Aunque cree actividades en orden como A-> B-> C-> D , Android puede destruir A / B / C / D cuando su aplicación está en segundo plano, y cuando el usuario regrese a su aplicación, sólo se recreará la actividad D. -
Encontré el mismo problema que una vez,
Starting an Activity from Notification destroys Parent Acitivities
. Esto es porque utilicé TaskStackBuilder. E incluso después de dejar de usar TaskStackBuilder, el problema sigue siendo. Sólo después de desinstalar la aplicación, funciona como se esperaba. Consulta los comentarios de https://stackoverflow.com/a/28268331/1198666
Esto ocurre porque el Ciclo de Vida de la Actividad se comporta de forma diferente desde ICS en adelante. Este hecho responde a esta pregunta, sin embargo todavía estoy por descubrir por qué esto está sucediendo. Si alguien quiere ver el código y verificar este comportamiento por sí mismos, AQUÍ
- Método Onlayout en el diseño personalizado extendiendo LinearLayout
- Deshabilitar el control de zoom en WebView mediante API 7 Android