Android – Finalización muy lenta de una actividad.
Tengo un botón “Cerrar” que cierra la aplicación.
He probado 2 métodos pero ambos son muy lentos.
1. Finalizando la actividad:
activity.finish()
2. Enviando la intención de la página de inicio (desde aquí)
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
¿Cómo puedo cerrar la actividad o enviarla al segundo plano más rápido?
¿Por qué hacer clic en el botón “inicio” es mucho más rápido que enviar la intención ACTION_MAIN
?
davy.ai
Para cerrar la actividad más rápidamente, puedes probar las siguientes opciones:
finishAffinity()
en lugar deactivity.finish()
. Este método finalizará todas las actividades de la tarea actual y también limpiará la pila de retroceso.Utiliza
moveTaskToBack(true)
, esto moverá la actividad al fondo, pero seguirá ejecutándose. Este método no destruirá la actividad, sino que la ocultará.Hacer clic en el botón “inicio” es mucho más rápido que enviar la intención
ACTION_MAIN
, porque el botón “inicio” es un botón de interfaz de usuario del sistema y es manejado por el iniciador. El iniciador es una aplicación del sistema y tiene una prioridad más alta que la aplicación actual. Cuando haces clic en el botón “inicio”, el iniciador determina qué hacer a continuación, y puede hacerlo muy rápidamente porque ya ha cargado todos los recursos necesarios en la memoria. El iniciador puede mover la actividad actual al fondo, o puede iniciar una nueva tarea o cambiar a otra tarea. Por otro lado, cuando envías la intenciónACTION_MAIN
, la actividad actual debe detenerse y la nueva actividad debe iniciarse. Este proceso lleva más tiempo que simplemente mover la actividad actual al fondo.