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

  • ¿Alternativa a "FLAG_BLUR_BEHIND" en Android?
  • El clic de Android en la notificación no abre la Actividad adjunta
  • Android: Actualización de campos para ParseUsers
  • "Tostar" un mensaje a través de TimerTask
  • OnCreate de actividad de Android se llama dos veces cuando se navega de nuevo desde otra actividad
  • Uso de LauncherActivity
  • Clase de utilidad estática con contexto / actividad - Android
  • Actividad de herencia con AndroidAnnotations
  • Aplicación con 2 actividades de lanzamiento
  • Fragmentos - ¿Tienes que usar un Envoltorio de actividad alrededor de un fragmento que comprende toda la Actividad?
  • Anular el botón de retroceso de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.