Cómo borrar la pila de nuevo a la actividad de raíz cuando el usuario deja la aplicación?

Tengo una aplicación con 2 actividades, LogonAct y MainAct. LogonAct es una actividad de inicio de sesión que quiero forzar al usuario a recorrer cada vez que vuelven a la aplicación. He definido android: clearTaskOnLaunch = "true" en LogonAct.

Cuando inicio la aplicación por primera vez, paso por esta secuencia de pantallas,

Home -> LogonAct -> MainAct -> Home

A continuación, seguir esta secuencia,

LogonAct -> Back -> MainAct

¿Por qué me está trayendo de nuevo a MainAct? ¿No debería haberse cerrado esa actividad desde que LogonAct tiene android: clearTaskOnLaunch = "true" . Esperaba ser traído de regreso a casa cuando me golpeó el botón Atrás de LogonAct.

Los fragmentos relevantes de AndroidManifest.xml,

  <activity android:name=".LogonAct" android:clearTaskOnLaunch="true"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name=".MainAct"> <meta-data android:name="android.app.default_searchable" android:value=".SearchResults" /> </activity> 

Estoy usando 1.5.

Cualquier ayuda apreciada.

2 Solutions collect form web for “Cómo borrar la pila de nuevo a la actividad de raíz cuando el usuario deja la aplicación?”

Los documentos para android:clearTaskOnLaunch mencionan que este atributo se aplica "siempre que [la Actividad] se vuelva a iniciar desde la pantalla de inicio".

Sin embargo, en su caso está presionando el botón Inicio para volver a la pantalla de inicio, en lugar de presionar el botón Atrás . Esto significa que su aplicación no se relanzó realmente porque el MainAct no estaba "terminado". Eso sólo ocurre cuando presiona Atrás (o si Android mata la tarea para guardar recursos, etc.).

Como sólo tiene dos actividades en su aplicación, puede establecer el atributo android:noHistory en MainAct , asegurando así que los usuarios nunca pueden volver a él y deben pasar por el LogonAct .

Como un aparte, parece un poco molesto forzar a los usuarios a volver a conectarse cada vez que navegan lejos de la aplicación (por ejemplo, cuando reciben una llamada telefónica).
Puede conservar un token de sesión con tiempo de espera en el almacenamiento persistente de su aplicación o mantener abierta una conexión de red utilizando un servicio si así funciona su aplicación, pero, por supuesto, eso depende de usted y de sus necesidades. 🙂

Puede hacer lo siguiente:
1. establecer clearTaskOnLaunch = "true" en AndroidManifest, en la declaración de la actividad principal
2. en actividad que debe cerrar:

 @Override public void onBackPressed(){ moveTaskToBack(true); } 

así que si el usuario pulsa de nuevo – vuelve a la pantalla de inicio si el usuario lanza la aplicación de nuevo – pila de tareas se borra y llega a la actividad principal de raíz

  • Ciclo de vida de la actividad lado a lado
  • Android Navigation Drawer implementado con Actividades
  • Ejecutar un método después de que una actividad sea visible para el usuario
  • ¿Cómo llamar a una actividad en otro proyecto?
  • ¿Para fragmentar o no fragmentar?
  • Cómo obtener Referencia de actividad en la clase View?
  • Teclado bluetooth causará actividad destruir y recrear
  • Patrón de comandos para pasar los métodos de actividad de la aplicación?
  • Android: Visualización de dos actividades en una sola pantalla
  • Uso de Diálogos vs Actividades
  • No se puede llamar a getSupportFragmentManager () de la actividad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.