¿Cómo terminar cualquier actividad previa en la pila de aplicaciones (en cualquier nivel, quiero decir, no padre inmediato), de la actividad actual como en algún evento particular, quiero invalidar esta actividad previa? Alguna ayuda ? Gracias.¿Terminar cualquier actividad previa en la pila de la actividad actual?
Respuesta
Esto puede ser posible mediante el uso de variables estáticas. Me gusta usar una variable booleana nombre_actividad_dirty = false; marque esto como verdadero tan pronto como ocurra su condición de invalidación de esa actividad en particular. Entonces, cuando llame a esta actividad, compruebe el estado de activity_name_dirty. Puede usar los Indicadores de actividad para crear un nuevo instante como se describe en Activity Fundamentals
Puede usar el indicador de Intento FLAG_ACTIVITY_CLEAR_TOP
para reiniciar una actividad de la pila y borrar todo lo que estaba sobre ella. Esto no es exactamente lo que estás preguntando, pero podría ser útil.
Para ello, utilice:
Intent intent = new Intent(context, classToBeStarted.class);
intent.setFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Sé que esta respuesta puede ser tarde, pero aún así la publicaré en caso de que alguien esté buscando algo como esto.
Lo que hice es declaré un controlador estático en en ACTIVITY_A
public static Handler h;
y en mi método onCreate()
para ACTIVITY_A
, tengo
h = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch(msg.what) {
case 0:
finish();
break;
}
}
};
Ahora, de cualquier actividad después de éste, tales como ACTIVITY_B
, o ACTIVITY_C
Puedo llamar al
ACTIVITY_A.h.sendEmptyMessage(0);
que luego llama a finish()
en ACTIVITY_A
y ta-da! ACTIVITY_A
ha terminado de una actividad diferente.
Así que cansado de esto, pero no funcionó después de que hiciera una prueba más profunda (lo dejo aquí por referencia en el futuro): android:clearTaskOnLaunch
Supongamos, por ejemplo, que alguien pone en marcha la actividad P de la casa pantalla, y de allí pasa a la actividad Q. El usuario sigue presionando Inicio, y luego regresa a la actividad P. Normalmente, el usuario vería la actividad Q, ya que eso es lo último que hacían en la tarea de P. Sin embargo, si P establece este indicador como "verdadero", todas las actividades que se encuentran encima de él (Q en este caso) se eliminaron cuando el usuario presionó Inicio y la tarea pasó al segundo plano. Entonces, el usuario solo ve P cuando vuelve a la tarea.
https://developer.android.com/guide/topics/manifest/activity-element.html
ACTUALIZACIÓN Esto funcionaba
Intent intent = new Intent(this, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);
Funciona muy bien, sin embargo, en mi caso, tuve que usar 'intent.addFlags (..)' – gnB
- 1. Reemplazar la actividad actual
- 2. ¿Cómo establecer la siguiente actividad de la actividad automatizada actual?
- 3. Cómo finalizar la actividad actual en Android
- 4. ¿Cómo obtener actividad actual en la pantalla?
- 5. Android: mostrar tostadas después de terminar la aplicación/actividad
- 6. ¿Cómo encontrar la última actividad desde la cual se abre la actividad actual en android?
- 7. Salir/Terminar una aplicación/actividad - android
- 8. Cómo finalizar la actividad principal de la actividad infantil
- 9. Cómo comprobar si mi actividad es la actividad actual que se ejecuta en la pantalla
- 10. inserción de Android en la pila de actividad
- 11. Realiza una actividad particular como actividad de raíz en la pila
- 12. Android cuánto tiempo estará nuestra actividad allí en la pila
- 13. Actividad actual de desarrollo Smalltalk
- 14. Problemas de tamaño de la pila de actividad de Android?
- 15. ¿Cómo borrar una actividad específica del historial de la pila?
- 16. ¿Cómo obtener cualquier identificador de la actividad más alta?
- 17. Cómo mostrar la actividad transparente en otra actividad sin eliminar la actividad anterior
- 18. ¿Iniciar nueva actividad y finalizar la actual en Android?
- 19. ¿Deshabilitar la actividad de la actividad de inserción cuando se inicia una nueva actividad?
- 20. Cómo finalizar una actividad de otra actividad
- 21. Finish principal y actividad actual en Android
- 22. ¿Cómo elimino el teclado después de terminar una actividad?
- 23. Actividad actual de la aplicación Android traer al frente
- 24. Android finaliza la actividad y comienza otra
- 25. Comenzar la actividad sin mostrarlo
- 26. Actividad iniciada desde la notificación abierta en la parte superior de la pila de actividades
- 27. La actividad de inicio de la actividad de preferencias causa la excepción de denegación de permiso
- 28. Borrar actividad Apilar e iniciar nueva actividad en android
- 29. Obten la instancia de actividad
- 30. La actividad continúa después de finalizar();
estoy teniendo el mismo problema. Primero empiezo las actividades A, B y C. Luego comienzo la actividad D con el conjunto Intent.FLAG_ACTIVITY_CLEAR_TOP. Esto debería hacer que D sea la única actividad en la pila, ¿verdad? De alguna manera, este no es el caso, porque cuando presiono el botón Atrás, vuelvo a una de las actividades anteriores. – neu242
No, así no es como funciona CLEAR_TOP. CLEAR_TOP elimina todo lo que está "por encima" de la actividad objetivo en la pila. Entonces, si tienes A, B, C y luego comienzas A otra vez con CLEAR_TOP, entonces mueren B y C.Si comenzó D o reinició C, no pasaría nada. Por eso dije que no era exactamente lo que estaba pidiendo, pero puede ser útil. Por ejemplo, si tiene una pantalla de menú principal que será la actividad raíz, puede relanzarla con CLEAR_TOP cada vez que el usuario regrese a ella para matar a todo lo demás. –
Entonces, para lograr lo que quería, podría hacer algo como esto: 1) Iniciar A, B, C. 2) Iniciar A con CLEAR_TOP y algunos datos que identifican D. 3) En A, finalizar llamada() y comenzar D Se siente como un hack sucio, pero debería funcionar ...? – neu242