teniendo - Android: ¿Cómo puedo detectar si el botón Atrás saldrá de la aplicación(es decir, esta es la última actividad que queda en la pila)?
porque mi celular aparece cargando pero no carga (2)
Me gustaría advertir al usuario si la retroactividad va a terminar la última actividad en la pila, saliendo de la aplicación. Me gustaría hacer un pequeño brindis y detectar una segunda presión hacia atrás en los próximos segundos y solo luego llamar a finish()
.
Ya codifiqué la detección de onBackPressed()
usando onBackPressed()
, pero no puedo encontrar una manera obvia de ver cuántas actividades quedan en la pila posterior.
Gracias.
La aplicación reddit es divertida al eliminar el método onKeyDown :
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Handle the back button
if(keyCode == KeyEvent.KEYCODE_BACK && isTaskRoot()) {
//Ask the user if they want to quit
new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle(R.string.quit)
.setMessage(R.string.really_quit)
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//Stop the activity
finish();
}
})
.setNegativeButton(R.string.no, null)
.show();
return true;
}
else {
return super.onKeyDown(keyCode, event);
}
}
La biblioteca droid-fu hace esto al verificar la pila de tareas en ejecución y ver si la siguiente tarea es la pantalla de inicio de Android. Consulte handleApplicationClosing
en https://github.com/kaeppler/droid-fu/blob/master/src/main/java/com/github/droidfu/activities/BetterActivityHelper.java .
Sin embargo, solo usaría este enfoque como último recurso, ya que es bastante raro, no funcionará en todas las situaciones y requiere permisos adicionales para obtener la lista de tareas en ejecución.