Android: borra todas las actividades del backstack y termina la actividad actual
Tengo varias actividades en mi aplicación y el flujo es muy complejo. Lo que quiero hacer es, tan pronto como el dispositivo USB está conectado, quiero borrar y terminar las actividades de la pila trasera, a continuación, terminar la actividad actual y el System.exit (0) para cerrar la aplicación.
Ya he implementado el dispositivo de escucha de dispositivos USB. Quiero saber cómo puedo borrar y terminar las actividades de la pila de atrás (si hay alguna, no va a tener ninguna actividad backstack cada vez) y luego terminar la actual.
- Android: Regresar al fragmento anterior en la parte posterior de la prensa
- TaskStackBuilder en PendingIntent no funciona
- Android ¿Cómo puedo "saltar a otra sucursal" en la pila de atrás de la actividad "árbol"?
- Cómo agregar BackStackEntry a BackStack si no existe
- Cómo Reverse Fragment animaciones en BackStack?
Además, si mi actividad A está en la parte superior y tiene 2 actividades (B, C) en la pila trasera. Ahora si la actividad A se está ejecutando en segundo plano y usb conectado, sólo la actividad A va a escuchar a la derecha? (Tengo el receptor del usb implementado en cada actividad.)
¿Cómo puedo lograr esto sin mi falla en la aplicación?
Gracias
- Fragmento addToBackStack () y popBackStackImmediate () no funciona
- Android - guardar / restaurar estado de fragmento
- Fragmento de PopBackStack
- Eliminación de la pila de actividad completa de Android en SDK antiguos (que carecen de FLAG_ACTIVITY_CLEAR_TASK)
- Intent.FLAG_ACTIVITY_CLEAR_TOP no funciona
- La forma correcta de manejar la navegación "Up" de acuerdo con las directrices
- Fragmentos onResume de la pila trasera
- Android: BackStack se comporta mal, si la aplicación se inició desde otra aplicación
Hay un método finishAffinity()
que terminará la actividad actual y todas las actividades de los padres, pero sólo funciona en Android 4.1 o superior
Fuente
finishAffinity()
finalizará esta actividad así como todas las actividades inmediatamente debajo de ella en la tarea actual que tengan la misma afinidad
Si desea para todos los niveles de API
En una de sus actividades
Intent intent = new Intent(this, YourActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // this will clear all the stack intent.putExtra("Exit me", true); startActivity(intent); finish();
A continuación, en el método YourActivity onCreate (), agregue esto para finalizar la Actividad
setContentView(R.layout.your_layout); if( getIntent().getBooleanExtra("Exit me", false)){ finish(); return; // add this to prevent from doing unnecessary stuffs }
En una aplicación que hice, he puesto:
if(Globals.isExit){ finish(); }
En cada método onResume () en cada actividad.
Globals es una clase que se declara como una en el manifest.xml. La clase Global tiene un booleano llamado exit.
En el menú de opciones de todas las actividades, incluya una opción de salida que defina Globals.exit como true y las llamadas finish ()
Entonces todas las actividades dejadas inacabadas están terminadas.
No estoy seguro de si necesitaría usar una intención para borrar el backstack o si el acabado lo limpia para usted. Lo siento si estoy equivocado en ese bit.
Lo siento por escribir mal, estoy en un teléfono.
- ¿Por qué Android pierde calidad de imagen al mostrar un archivo png?
- ¿Cómo crear una aplicación Android con sólo 1 broadcastreceiver?