ver samsung historial google como chrome celular busqueda buscado borrar automaticamente actividad android

android - samsung - mi actividad google borrar historial



¿Cómo borrar una actividad específica del historial de pila? (6)

Al iniciar la aplicación. Todas las actividades se inician en la misma tarea por defecto. Así que la pila de atrás se ve como abajo.

Tarea: A-> B-> C-> D en este caso, el TOP de la pila trasera apunta a "D"

Ahora cuando si quieres hacer que el TOP apunte a "A" de nuevo. Solo declara el atributo

android:launchMode="singleTask"

para la actividad "A" en tu AndroidManifest.xml

Ahora, cuando presiona el "botón eliminar" en la actividad "D", comience la actividad de la forma habitual, como lo hace. La pila trasera se borra de la actividad "B" y "C" y se obtiene un inicio limpio desde la actividad "A"

Recuerde que esto cerrará y destruirá su actividad D de la memoria incluso si no llama a finish() explícitamente en "D"

Supongamos que tengo una aplicación que contiene actividades llamadas A, B, C, D. Ahora, considere que A ha sido lanzado como la actividad raíz y B ha sido lanzado desde A y C ha sido lanzado desde B y D ha sido lanzado desde C. Ahora tengo un botón llamado "Eliminar" en la actividad D. Si se supone, Presiono el botón "Eliminar" en la actividad D, luego la actividad B y la actividad C deberían eliminarse de la pila de historial. Al presionar la tecla Atrás de la actividad D debería mostrarse la actividad A en lugar de C. No sé cómo implementar esto. ¿Alguien puede ayudarme a resolver este problema?


Creo que esto haría lo que quieras. En el archivo de manifiesto, simplemente agregue el atributo "noHistory" a las actividades "B" y "C" que no desea volver a visitar al presionar el botón Atrás en "D".

<activity android:name="com.acme.activityA"></activity> <activity android:name="com.acme.activityB" android:noHistory="true"></activity> <activity android:name="com.acme.activityC" android:noHistory="true"></activity> <activity android:name="com.acme.activityD"></activity>


Estoy de acuerdo con @RivieraKid, pero pienso en otra forma: cuando presionas "Quitar", configuras un indicador personalizado como verdadero.

Anular el evento de tecla de retroceso:

public void onBackPressed() { if (!remove){ super.onBackPressed(); }else{ Intent goToA = new Intent((this,ActivityA.class);); goToA.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(goToA); } }

¿Crees que esto hace lo que quieres?

Buena suerte.



Una alternativa es crear una clase para tener acceso a las actividades y cerrarlas. Ejemplo:

Ocupaciones:

  • acto 1
  • act2
  • act3

Clase de control:

public class ActivitiesControl { public static act1 vAct1 = null; public static act2 vAct2 = null; public static act3 vAct3 = null; }

En el onCreate de cada actividad que establezca: ActivitiesControl.vAct1 = this;

y onDestroy (): ActivitiesControl.vAct1 = null;

Cuando quieras destruir alguna actividad para eliminarla de la PilaHistoria, simplemente llama:

ActividadesContro.vAct1.finish ();

No sé si este es el mejor método, pero es lo que funcionó para mí.


No estoy seguro de que pueda eliminar directamente las actividades del historial mediante programación, pero si usa startActivityForResult() lugar de startActivity() , entonces, dependiendo del valor de retorno de su actividad, puede finish() inmediatamente la actividad predecesora para simular El comportamiento que quieras. Al usar este método en todas sus actividades, puede tener este comportamiento en cascada en la pila de actividades para permitirle pasar de la actividad D a la actividad A.

Sé que esta no es su situación, pero en el futuro, si sabe antes de comenzar la actividad que no desea que el predecesor permanezca, puede llamar a finish() inmediatamente después de startActivity() .

Consulte la sección llamada "Duración de la nueva pantalla" en Tareas comunes y Cómo hacerlas en Android.