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.

¿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í.

  1. 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.

  2. 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Í

  • Comunicación entre servicios y actividades de Android
  • Android: Detener un servicio Bonjour que se ejecuta después de que el proceso padre se cierre abruptamente
  • Android - Firebase jobdispatcher
  • Uso del servicio LocationClient de Google Play Services en segundo plano
  • El servicio de larga duración consume mucha batería
  • Cómo probar un IntentService utilizando un ServiceTestCase?
  • Incapaz de crear servicio java.lang.NullPointerException
  • Descarga de datos y actualización de la interfaz de usuario
  • El método onHandleIntent () no se llama
  • Permitir cancelación de la notificación después de llamar a stopForeground (false)
  • Servicio vs IntentService
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.