2010-01-25 9 views
15

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 pasar cada vez que vuelve a la aplicación. Establecí android: clearTaskOnLaunch = "true" en LogonAct.¿Cómo borrar la actividad de volver a la raíz de la pila cuando el usuario abandona la aplicación?

La primera vez que inicie la aplicación que vaya a través de esta secuencia de pantallas,

Home -> LogonAct -> MainAct -> Home

entonces sigo esta secuencia,

LogonAct -> Back -> MainAct

¿Por qué se me traer de vuelta a MainAct ? ¿No debería haberse cerrado esa actividad ya que LogonAct tiene android: clearTaskOnLaunch = "true". Esperaba que me trajeran a casa cuando presioné el botón Atrás desde LogonAct.

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> 

que estoy usando 1.5.

Cualquier ayuda apreciada.

+0

Se puede editar su pregunta y agrega tu Manifiesto, o al menos el elemento para 'LogonAct', ya que eso ayudaría a las personas a detectar si hay un error en él. –

+0

Los fragmentos de AndroidManifest.xml incluyen Dave. Debería haberlos incluido con la pregunta, pero no tenía el código en frente de mí. – Adrian

Respuesta

11

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 el caso de que esté presionando el botón Inicio para volver a la pantalla de inicio, en lugar de pulsar el botón Volver . Esto significa que su aplicación no es realmente relanzada porque el MainAct no fue "terminado". Eso solo ocurre cuando presiona Atrás (o si Android mata la tarea para guardar recursos, etc.).

ya que sólo tiene dos actividades en la aplicación, se puede establecer el atributo android:noHistory en MainAct, asegurando de este modo que los usuarios no pueden regresar a la misma y deben pasar por el LogonAct.

Como un lado, parece un poco molesto obligar a los usuarios a volver a iniciar sesión cada vez que navegan fuera de la aplicación (por ejemplo, cuando reciben una llamada telefónica).
Puede retener 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 usando un servicio si así es como funciona su aplicación —, pero eso depende de usted y de sus requisitos. :)

+1

Gracias por su ayuda Christopher. Tengo algunas actividades más que pueden venir después de MainAct así que si uso android: noHistory en MainAct estas otras actividades vuelven a la pantalla de inicio de sesión cuando selecciono Back. Acepto que iniciar sesión cada vez que ingrese a la aplicación no es ideal. Es una aplicación de administrador de contraseñas, así que no quería dejarla accesible por mucho tiempo. Lo que voy a intentar hacer es tener un temporizador que funcione de manera similar a sudo, es decir, solicite la contraseña si han pasado más de x segundos desde la última vez que se ingresó. – Adrian

+3

Ah. En ese caso, podría agregar una llamada rápida al método en 'onResume()' de cada 'Activity' que tenga, que verifique si ha transcurrido un determinado período de tiempo. Si es así, llame a 'finish()' y ejecute un 'Intent' para enviarlos nuevamente a' LogonAct'. –

15

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

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

por lo que si el usuario presiona la espalda - se trata de volver a la pantalla de inicio si el usuario lanza aplicacion de nuevo - pila tarea se borra y que viene a acabar con la actividad principal

+0

Gracias muzhig Tu descripción me ayuda mucho. – amity

+0

gracias muzhig ... me ayudó ... –

Cuestiones relacionadas