¿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:
- Actividades
- Error StackOverflow, excepción View.inflate
- ¿Cómo manipulo la pila de actividades de Android?
- Android: borra la pila trasera
- Android: Borrar pila de actividad
A->D
Tenga en cuenta que la actividad C es un diálogo.
- ¿Simular la vista de pila en Android 2 (API 5)?
- Pila de actividad de Android
- ¿Cómo evito que onCreate () sea llamado al iniciar una Actividad?
- Android empuja una nueva actividad mientras limpia a otros
- Java / Android - ¿Cómo imprimir una traza de pila completa?
- ¿Tener demasiadas actividades afecta mi desempeño?
- Insertar androide en pila de actividad
- Android finaliza Actividad e inicia otra
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 flagFLAG_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
- ¿En qué consiste "android: key" en <PreferenceScreen>?
- Cámara en la aplicación de teléfono. Reiniciar la aplicación