2011-05-11 27 views

Respuesta

13

muy sencilla: utilizar intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); en un intento utilizado para iniciar la actividad A.

+0

Ouch, leí mal que desea borrar el historial al volver a A ** usando el botón de retroceso **. Pero aún así, las únicas dos maneras de llegar a A es a través del botón Atrás o mediante el inicio explícito de la actividad desde otro. Pero si usa la bandera mencionada al iniciar la actividad A desde B o C, entonces se borrará el historial. Y si solo presiona el botón Atrás, también se borrará uno por uno, por lo que mi respuesta debería resolver su problema. – compostus

+0

como estoy usando el botón atrás para ir a la pantalla A (Inicio), entonces esto no tiene ningún sentido. – UMAR

+1

@UMAR: pero si solo está utilizando el botón Atrás para llegar a Inicio, cualquier actividad previa debería eliminarse automáticamente del historial a medida que se aleja de ellas. ¿No es así? – compostus

0

En la Actividad Una prueba esto:

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    { 
     if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){ 
       finish(); 
     } 

     return super.onKeyDown(keyCode, event); 
    } 

Esto debería garantizar que si se pulsa el botón de retroceso de la actividad es finish() ed. Si esta actividad está en la parte inferior de la pila, debe salir de la actividad finish.

0

Creo que compostus es cierto, pero si no, desde A puede iniciar B con startActivityForResult() y en onActivityResult() manejar el "mensaje" recibido. La actividad B enviará un mensaje de "CLOSE_ACTIVITY" si se ha presionado el botón Atrás.

2

Puede hacer lo siguiente: 1.
conjunto clearTaskOnLaunch = "true" en AndroidManifest, en la declaración de la actividad Un
en la actividad 2. C:

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

por lo que si el usuario presiona la espalda - se trata volver a la pantalla de inicio si el usuario inicia la aplicación nuevamente - la pila de tareas se borra y llega a la actividad raíz (A)

+0

Entonces, ¿no necesito establecer intenciones para borrar actividades principales, etc. si utilizo el código anterior que estás sugiriendo? ¿Solo "moveTaskToBack" se encargará de todo? –

+0

Sí. Le permite mover la tarea al fondo y mostrar la pantalla de inicio. (pero todavía es actividad C actualmente activa para esta tarea). Cuando el usuario inicia su aplicación de nuevo, clearTaskOnLaunch funciona y elimina todas las actividades en su tarea, excepto la actividad raíz, por lo que exactamente en ese momento A se activa y C destruye. – Arseniy

+0

Esto no funcionó para mí, todavía abre algunas páginas aleatorias o la página que dejé en la aplicación al volver a ejecutarla. –

Cuestiones relacionadas