2010-07-08 12 views
6

Tengo problemas para eliminar todas las actividades de la pila con Intent.FLAG_ACTIVITY_CLEAR_TOP y android: launchMode = "singleInstance".¿Cómo borro todas las actividades de la pila?

En mi actividad de aplicación A, inicia la actividad B (a través de startActivity) que a su vez inicia la actividad C (a través de startActivity). En la actividad C, el usuario presiona un elemento de menú para volver a la actividad A. Cuando llegan a la actividad A, solo quiero A en la pila, de modo que si hacen clic en el botón Atrás vuelven a la pantalla de inicio (escritorio).

Este es el código que estoy utilizando actualmente cuando el usuario presiona un botón para volver a R:

Intent i = new Intent(this, A.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 

Todas las actividades se definen como androide: launchMode = "SingleInstance" en el proyecto de manifiesto.

Mi código parece no funcionar. Una vez que vuelva a la actividad A, si hago clic en el botón Atrás, vuelvo a la actividad C. ¿Entiendo mal cómo usar Intent.FLAG_ACTIVITY_CLEAR_TOP?

+0

Incluso estoy enfrentando un problema similar. ¿Se resolvió? Si es así, ¿cómo lo hiciste? – EnthuDeveloper

Respuesta

2

Siempre he encontrado que la mejor manera de asegurar que C se elimine de la pila es llamar a finish() después de startActivity para eliminar C de la pila.

La documentación dice que las cosas se comportarán de la manera que usted esperaba, pero parece que esto no está sucediendo, por lo que finish() se asegurará de que se elimine C.

+0

Finalizar llamada() eliminaría C, pero B todavía estaría en la pila. Quiero A, B, C todo en la pila hasta que el usuario solicite específicamente ir de C -> A. – Richard

+0

FLAG_ACTIVITY_CLEAR_TOP se deshace de B, pero según mi experiencia (y parece similar al tuyo), no se consigue deshacerse de C. Así que si combinas la bandera y el uso de finish() deberías obtener lo que deseas. –

Cuestiones relacionadas