Estoy encontrando que en mi aplicación, el usuario puede estar bastante 'anidado' en las diversas actividades que se abren mientras el usuario está usando la aplicación.¿Hay alguna forma de tener una y solo una instancia de cada actividad?
Por ejemplo:
- Menú Principal
- lista de objetos
- detalles de objeto
- de edición de objetos
- detalles de objeto
- objeto secundario detalles
- objeto secundario Editar
- Objeto hijo Detalles
Ahora, cuando el usuario presiona la espalda, tiene que pasar por "objeto Detalles del niño dos veces (el mismo objeto, cuando se edita vuelve a la página detallada), y lo mismo sucede para los 'Detalles del objeto principal'.
¿Hay alguna forma de reutilizar las actividades, si ya están abiertas en la pila, y reordenarlas al frente? La única forma que he visto es en actividades con el atributo launcher
. Creo que vi singleTask
y singleTop
.
Si se supone que estoy usando estos dos atributos, singleTask
y singleTop
, ¿cómo se supone que debo usarlos? Cuando traté de incluirlos en la aplicación, no hizo ninguna diferencia. ¿También necesito establecer una bandera mientras lanzo la intención usando startActivity
?
** No use esto sin entender todas las implicaciones de 'launchMode =" singleInstance "'. Esto no _realiza_realiza_actividades_ **, porque obliga a la actividad a estar en una tarea separada por completo (es decir, aparecerá separada de la aplicación en la lista de Aplicaciones recientes). Entonces, si haces esto para cada actividad en tu aplicación, verás cada una de ellas como entradas separadas en la lista de Aplicaciones recientes. Al menos eso es lo que dicen los doctores. La [realidad es un poco diferente] (https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en). –
Mi recomendación es usar 'Intent.FLAG_ACTIVITY_REORDER_TO_FRONT' en su lugar (como se sugiere en la respuesta de Vikram a continuación), aunque no es una solución perfecta. –