La reciente lista de aplicaciones en Ice Cream Sandwich agregó la capacidad de eliminar aplicaciones de la lista, descartándolas permanentemente (y que yo sepa, esta es una función vainilla, no una CM / ROM personalizada). La documentación y los aspectos destacados de la plataforma no parecen cubrir el funcionamiento oculto de esta funcionalidad, pero tengo curiosidad por saber qué está haciendo realmente el sistema.
Además de mi curiosidad, decidí hacer una prueba rápida: inicié Music en una instalación CM9, luego me retiré. Luego verifiqué la lista de aplicaciones recientes y vi que efectivamente estaba allí (y en el estado correcto, según la miniatura). Luego entré Settings->Applications
y forcé la detención de la aplicación Música, pero todavía estaba en la lista reciente, lo que me hace creer que no está conectada a procesos que se mantienen en segundo plano.
Al darme cuenta ahora de que la música puede haber sido una mala elección, también probé con la aplicación USA Today. Esto exhibió básicamente el mismo comportamiento, y parecía que se vio obligado a "relanzarse" después de la detención forzada (lo cual tiene sentido) aunque la miniatura en la lista de aplicaciones recientes no reflejó esto (en caché, supongo).
Entonces, ¿qué sucede realmente en el nivel del sistema operativo cuando desliza una aplicación fuera de la lista reciente? ¿Simplemente borra los datos de la aplicación de la RAM y la basura la recolecta, destruyendo su estado guardado?
fuente
Parece que encontré los términos de búsqueda mágicos que llevaron a algunas explicaciones de los empleados de Google. Específicamente, encontré un par de lugares diferentes donde Dianne Hackborn explica qué sucede cuando deslizas algo fuera de la lista reciente. El primero es un comentario en una de sus publicaciones de Google+ :
Ella también señala en un comentario de blog :
Por lo tanto, parece que el resumen es que al eliminar una aplicación de la lista, primero se eliminarán todos los procesos en segundo plano para la aplicación, luego se usará
onTaskRemoved
para notificar a la aplicación que la tarea en segundo plano se eliminó. En ese momento, parece que depende de la aplicación decidir qué sucede, por lo que técnicamente no existe una regla estricta sobre lo que le sucede a la aplicación más allá de ese punto.fuente
Hay información en el código fuente en las clases com.android.internal.policy.impl.RecentApplicationsBackground y com.android.internal.policy.impl.RecentApplicationsDialog .
Si leo esto correctamente, hay controladores específicos para seleccionar las aplicaciones, pero nada especial para deslizarlas, excepto
onDetachedFromWindow()
las llamadascom.android.View.onDetachedFromWindow()
que básicamente ocultan el elemento y borran sus datos. Esto indicaría el hecho de que no ocurre nada especial al deslizar la aplicación, lo que corresponde con la respuesta de Austin Mills, ya que como la lista no muestra la aplicación activa, lasonPause()
llamadas al sistema y otras llamadas que se realizan al "salir" de una aplicación tienen ya pasó.fuente
Creo que hará lo mismo que el botón Atrás. Excepto un pequeño cambio. Será
finish()
toda la actividad / fragmentos en la aplicación.Acabo de hacer una pequeña prueba con una pequeña aplicación de autoconstrucción. Puedes probar también. Aquí está mi aplicación de prueba: https://bitbucket.org/Leandros99/lifecycletest (descarga disponible, también. Para aquellos que no pueden construir).
En todos los métodos de ciclo de vida de la actividad ( http://developer.android.com/reference/android/app /Activity.html#ActivityLifecycle ) imprime la aplicación en un registro. Puede verlo con adb logcat (instale Android SDK, cd en herramientas de plataforma en cmd / shell y escriba
adb logcat
. Ahora verá que cada vez que hace algo como presionar el botón de inicio o de inicio, la aplicación imprime el método del ciclo de vida mencionado anteriormente. )Su pregunta: si deslizo una aplicación desde el cajón de aplicaciones recientes,
onDestroy
se llamará al método. Hace casi lo mismo que el botón Atrás.Espero haber ayudado un poco. Si hay preguntas, solo pregunte.
fuente
Cierra la aplicación y sus datos que se almacenan en la RAM. Por lo tanto, le brinda más espacio de RAM para que pueda ejecutar otras aplicaciones. Sin embargo, los servicios en segundo plano NO se cierran automáticamente como resultado del cierre de la aplicación.
fuente