App pierde su capacidad de recordar su pila cuando se inicia desde otra aplicación

Ahora que he investigado esto aún más, estoy reescribiendo esto para hacerlo más claro. Si está buscando más información, hay algunas disponibles en ediciones anteriores.

Qué está pasando

(Esto se refiere a una aplicación que no ha establecido ninguna configuración de launchMode y, por lo tanto, está usando los valores predeterminados)

Inicia una aplicación desde Market o desde el instalador. Esto inicia la actividad raíz / principal de la aplicación con el indicador FLAG_ACTIVITY_NEW_TASK y sin categorías. En este momento, la pila de aplicaciones es [A]

Entonces continúe con la siguiente actividad en la aplicación. Ahora la pila en esta tarea es [A> B]

Luego presiona la tecla de inicio y luego reinicia la misma aplicación presionando su icono desde la pantalla de inicio o la bandeja de aplicaciones.

Lo que se espera en este momento es que se muestre la actividad B, ya que es donde la dejó. Sin embargo, se muestra A y la pila de tareas es [A> B> A]. Esta segunda instancia de A se inicia con los siguientes indicadores: FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITY_RESET_IF_NEEDED y FLAG_ACTIVITY_BROUGHT_TO_FRONT. También tiene la categoría android.intent.category.LAUNCHER.

n este punto, si presiona la tecla Atrás, volverá a B, tal como estaba cuando lo dejó.

Mirando la documentación, parece que FLAG_ACTIVITY_BROUGHT_TO_FRONT solo debe establecerse para actividades que usan singleTask o singleTop launchModes. Sin embargo, esta aplicación no ha establecido ningún modo de lanzamiento y, por lo tanto, está utilizando el modo de inicio estándar predeterminado.

¿Asumo que esto no se supone que suceda en este caso?

También debo tener en cuenta que, una vez que entra en este estado extraño, sucede cada vez que la aplicación se inicia desde la pantalla de inicio o la bandeja de aplicaciones. Si la tarea ha finalizado (reiniciar el teléfono, forzar la detención de la aplicación o presionar de nuevo a través de la pila) se solucionará este problema y ya no se iniciará incorrectamente. Solo sucede si inicia la aplicación desde el instalador o el mercado y luego intenta iniciarla desde el iniciador.

Entonces, en resumen, ¿por qué está sucediendo esto? ¿Hay una forma de prevenirlo

Respuestas a la pregunta(2)

Su respuesta a la pregunta