¿Cómo administrar la pila de actividades?

Cuando mi pila está en esta situación:

A->B->C 

Si empiezo la actividad de D, quiero que la pila de la actividad se convierta en:

 A->D 

Tenga en cuenta que la actividad C es un diálogo.

Aquí están los pasos que harán lo necesario:

  • Desde la actividad C inicie la actividad A con un booleano fromActivityC incluido con la intención y el flag FLAG_ACTIVITY_CLEAR_TOP establecido.
  • Ahora en la creación on de la actividad Una comprobación de este booleano "fromActivityC" en primer lugar y si está presente iniciar la actividad D si el flujo normal continúa.

     // following code can be used to get the boolean in the oncreate boolean entrypoint=this.getIntent().getExtras().getBoolean("fromActivityC"); 

Una solución de lil pero Espero que ayuda

Un poco hacky, pero usted podría comenzar la actividad A mientras que limpia la pila, después comienza la actividad D.

La actividad A puede aparecer por un momento antes de desaparecer

Puede intentar terminar ActivityB cuando inicia ActivityC y lo mismo en ActivityC al iniciar A.

Su código se vería así:

 Intent i = new Intent(this.class.ActivityC); startActivity(i); ActivityB.finish(); 

Hay varias formas de eliminar una actividad de la pila o evitar que se apile:

Para eliminar su actividad de la pila, simplemente llame a finish() , vea aquí .

También puedes implementar en tu manifiesto la propiedad: android: noHistory = "true" que impide que se apile una actividad.

Vea este formulario de preguntas con más detalle: Eliminación de una actividad de la pila de historial

En la devolución de llamada de C, pasar un mensaje de nuevo a A e iniciar su D de acabado Acall, esto terminará B y C (porque C es aparte de B).

Aquí hay una mejor solución que no depende de la evaluación del contenido de Intent en A : use el flag FLAG_ACTIVITY_TASK_ON_HOME

También debe echar un vistazo a las otras banderas Android Intent

  • ¿Hay alguna forma de mostrar pilas de Acivity para Android?
  • Android: ¿Cómo puedo crear una vista de pila deslizable?
  • Programación de juegos para Android - Heap issues
  • Finalizar todas las actividades iniciadas antes de la actividad
  • Error: Theme.Translucent & FLAG_ACTIVITY_REORDER_TO_FRONT
  • Crash debido a "corrupción de pila detectada: abortada"
  • ¿Cómo puedo inhabilitar "volver" a alguna actividad?
  • Ver pila de actividades en Android
  • Fuera de la memoria de excepción + análisis de volcado de archivos hprof
  • Android: ¿Cómo hacer que el lanzador abra siempre la actividad principal en lugar de la actividad infantil? (o de otro modo)
  • Terminar una actividad de otra clase
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.