Lleve una actividad al frente usando FLAG_ACTIVITY_REORDER_TO_FRONT

Mi pila de actividades es A1 B A2, con A2 en la parte superior.

A1 y A2 son instancias de la misma actividad, A. Ahora en A2, quiero que A2 salga y traiga A1 hacia delante, por lo que la pila final debe ser B A1. ¿Cómo debo implementarlo?

Mi código actual que A2 ejecuta es:

finish(); intent = new Intent(this, A.class); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP); startActivity(intent); 

El código anterior trajo B al frente, por lo que la pila final es A1 B, que no es lo que esperaba.

¿Alguna idea?

Gracias.

No es posible hacer lo que quiera con las banderas de intención.

La razón se debe a la forma en que FLAG_ACTIVITY_REORDER_TO_FRONT funciona. Cuando usa este indicador, Android busca una instancia de la actividad deseada en su pila de actividades, empezando por el frente de la pila y escaneando hasta llegar a la raíz / 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 actividades se ve así:

 A1, B, A2 (front of task) 

Al intentar reordenar su actividad A, Android encuentra primero la instancia A2 y la reordena al frente de la tarea. Por supuesto, ya estaba en la parte delantera de la tarea por lo que realmente no hacer nada.

Por supuesto, ya has llamado a finish() en esta actividad y has intentado (mediante FLAG_ACTIVITY_PREVIOUS_IS_TOP ) decirle a Android que no debería considerar la actividad actual al decidir qué hacer, pero todo esto se ignora. Android considera A2 como la instancia más reciente de la actividad A y la reordena al frente. Entonces A2 se termina y la actividad B se convierte en el frente de la tarea. El usuario ve "B" y la pila de actividades es:

 A1, B (front of task) 

Tendrás que encontrar otra forma de lograr los resultados deseados (ya que este post es casi 2 años de edad supongo que ya has encontrado otra manera).

En mi aplicación, tengo exactamente la misma situación.

Mi solución fue crear una actividad Start-up invisible, X, que redirige a A

Así que su pila se vería así:

X A1 B A2

En cualquier momento necesito volver a A1, rebobinar a X (usando FLAG_ACIVITY_CLEAR_TOP), que, a su vez, iniciará A.

Llamas finish () antes de llamar a startActivity. ¿Cómo crees que se supone que debe comenzar la actividad después de que ya está terminado?

Además, ¿cómo se supone que debe saber qué instancia de A traerá al frente?

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.