No es posible hacer lo que quiera utilizando los indicadores de Intención.
La razón se debe a la forma en que FLAG_ACTIVITY_REORDER_TO_FRONT
funciona. Cuando usa esta bandera, Android busca una instancia de la actividad deseada en su pila de actividades, comenzando desde el frente de la pila y escaneando hasta llegar a la raíz/parte posterior de la pila. Tan pronto como encuentre una instancia de la actividad especificada, la llevará al frente (es decir, si hay varias instancias de la actividad especificada, traerá al frente la instancia más reciente ).
En su caso, la pila de la actividad será similar a:
A1, B, A2 (front of task)
Al tratar de reordenar su actividad A, Android busca la instancia A2 primero y reordena que al frente de la tarea. Por supuesto, ya estaba al frente de la tarea, así que esto realmente no hace nada.
Por supuesto que ya ha llamado finish()
en esta actividad y ha intentado (usando FLAG_ACTIVITY_PREVIOUS_IS_TOP
) decirle a Android que no debe considerar la actividad actual mientras decide qué hacer, pero todo esto se ignora. Android ve A2 como la instancia más reciente de la actividad A y la reordena al frente. Luego A2 termina y la actividad B se convierte en el frente de la tarea. El usuario ve "B" y la pila de la actividad es:
A1, B (front of task)
Tendrá que encontrar otra manera de lograr los resultados deseados (ya que este post es de casi 2 años de edad que se supone que ya ha encontrado otra camino).
Hice una nueva clase extendiendo la clase A. – Kai
Gracias muchas buenas explicaciones – Simcha