Pregunta

Tengo una aplicación que gira alrededor de la actividad principal (un menú principal).En cada aplicación hay un elemento de menú de opciones que dirige a esta actividad.

Al principio, siempre comenzaba una nueva actividad principal cuando se seleccionaba este elemento.Usando el paquete de intenciones, le dije a la actividad principal que algunas inicializaciones que hago al comenzar de nuevo no eran necesarias.

Sin embargo, no me gustó mucho el comportamiento general.me topé con android:launchMode="SingleTask" y esto pareció ayudar:ahora no recreo la actividad de mi menú principal todo el tiempo;Además, si presiono el botón "atrás", vuelvo directamente a la pantalla de inicio.Esto se siente bastante bien como un menú "principal" adecuado.

Mi problema ahora es este:Si ejecuto otra actividad de mi aplicación, presiono el botón de inicio y luego vuelvo a abrir mi aplicación (p. ej.usando "últimas aplicaciones"), entonces no vuelvo a la última actividad, sino a la principal.La otra actividad se destruye.

¿Alguna idea de cómo puedo implementar el comportamiento de SingleTask ¿sin poder solo regresar a una actividad?

¿Fue útil?

Solución

Si sus otras actividades se declaran normalmente con los valores predeterminados de actividad en Android, volver a su aplicación debería llevarlo a la misma actividad donde la dejó (usando el botón de inicio del hardware).

Sin embargo, recuerde que el sistema Android elimina aplicaciones cuando requiere recursos del sistema.Por lo tanto, es posible que su aplicación haya sido eliminada cuando fue a la otra aplicación.Luego, cuando regrese a su aplicación, se reiniciará la actividad predeterminada del iniciador, que es su actividad de Menú.

Para volver a la actividad principal desde cualquier actividad, haga esto:

public static void goHome(Context context) {
        final Intent intent = new Intent(context, HomeActivity.class); //give name of your main activity class here
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        context.startActivity(intent);
    }

Eso borrará la pila de actividades y lo llevará de regreso a su actividad principal.Como declaró singleTop, pondrá en primer plano la actividad principal existente.La bandera Intent.FLAG_ACTIVITY_CLEAR_TOP eliminará todas las actividades en la pila encima de la actividad principal.(Supongo que estás dentro de la misma aplicación).

Ahora, todas sus otras actividades sólo necesitan incluir un botón cuyo detector de clics invoque el método goHome();

Desde su actividad principal, si presiona el botón Atrás del hardware, debería salir de su aplicación.

Otros consejos

¿Por qué no llamar a Finish() en las actividades creadas por la actividad principal?De esta manera regresas a la actividad principal, sin crear una nueva...

Creo que deberías guardar el estado de tu actividad antes de comenzar otra actividad y luego reanudarla cada vez que regreses a la última actividad.ver Ciclo de vida de la actividad desde Androidhttp://developer.android.com/guide/topics/fundamentals/activities.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top