Página principal » cómo » ¿Qué sucede exactamente cuando pasas una aplicación de Android de la lista de aplicaciones recientes?

    ¿Qué sucede exactamente cuando pasas una aplicación de Android de la lista de aplicaciones recientes?

    Cuando desliza una aplicación de su lista de aplicaciones actualmente en ejecución en Android, ¿qué sucede exactamente con la aplicación y los datos? Sigue leyendo mientras investigamos.

    La sesión de preguntas y respuestas de hoy nos llega por cortesía de Android Enthusiast, una subdivisión de Stack Exchange, un grupo de sitios web de preguntas y respuestas impulsado por la comunidad..

    La pregunta

    El lector de Android Entusiasta, Eldarerathis, siente curiosidad por la funcionalidad de deslizar la aplicación que le permite subir su lista de aplicaciones en ejecución a través del botón de inicio y luego deslizarlas hacia la derecha, probablemente para cerrarlas:

    La lista de aplicaciones recientes en Ice Cream Sandwich agregó la capacidad de deslizar aplicaciones fuera de la lista, descartándolas permanentemente (y por lo que sé, esta es una función de vainilla, no una CM / ROM personalizada). La documentación y los aspectos destacados de la plataforma no parecen cubrir el funcionamiento de esta funcionalidad, pero tengo curiosidad por saber qué está haciendo realmente el sistema..

    Además de aumentar mi curiosidad, decidí hacer una prueba rápida: inicié Music en una instalación de CM9 y luego me retiré. Luego verifiqué la lista de aplicaciones recientes y vi que efectivamente estaba allí (y en el estado adecuado, según la miniatura). Entonces entré Ajustes-> Aplicaciones y force detuvo la aplicación de Música, pero aún estaba incluida en la lista reciente, lo que me lleva a creer que no está conectado a procesos que permanecen en segundo plano.

    Al darme cuenta de que la música puede haber sido una mala elección, también la probé con la aplicación USA Today. Esto mostraba básicamente el mismo comportamiento, y parecía que se vio obligado a "relanzar" después de la detención forzada (lo que tiene sentido), aunque la miniatura de la lista de aplicaciones recientes no reflejaba esto (en caché, ¿supongo?).

    Entonces, ¿qué sucede realmente en el nivel del sistema operativo cuando se desliza una aplicación de la lista reciente? ¿Simplemente borra los datos de la aplicación de la RAM y la basura los recolecta, destruyendo su estado guardado??

    ¿Qué sucede exactamente cuando sacas la aplicación de la lista??

    Las respuestas

    Austin Mills, colaborador de Android Enthusiast, ofrece una idea:

    Eliminar aplicaciones de la lista de aplicaciones recientes es vainilla, y sí, no está bien documentado. Este ha sido el tema de una discusión decente en varios foros de Android ... el consenso parece ser mejor descrito aquí en algunos comentarios: que el comportamiento es similar pero no exactamente igual al cierre de una aplicación, en general (para aplicaciones que no defina el manejo explícito del botón de retroceso) es lo mismo que devolver el tiempo suficiente dentro de una aplicación que salga de ella.

    El enlace tiene más detalles sobre los detalles específicos, pero en general se puede pensar que se está cerrando la aplicación..

    Específicamente para la aplicación de Música, creo que comienza un servicio, así que mientras que la tarea en sí (la aplicación de Música / UI) puede estar cerrada, el servicio continúa ejecutándose en segundo plano para que su música no se detenga de repente solo porque la tarea fue borrado por razones de gestión de la memoria. Eso puede haber afectado lo que viste..

    Luego, participando en el círculo de preguntas y respuestas de la vida, Eldarerathis regresó con una investigación propia para completar la respuesta:

    Parece que he encontrado 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 lo que sucede cuando pasas algo de la lista reciente. El primero es un comentario en una de sus publicaciones de Google+:

    [W] lo que sucede específicamente cuando elimina una tarea reciente es: (1) elimina cualquier proceso de fondo o vacío de la aplicación (vea aquí lo que significa), y (2) utiliza la nueva API para informar a cualquier servicio de la aplicación sobre la tarea que se está eliminando para que pueda hacer lo que crea que es apropiado.

    Ella también nota en un comentario de blog:

    En realidad, la eliminación de una entrada en tareas recientes eliminará cualquier proceso en segundo plano que exista para el proceso. No hará que los servicios se detengan directamente; sin embargo, hay una API para que descubran que la tarea se eliminó para decidir si quieren que esto signifique que deben detenerse. Esto es para que, al eliminar la tarea reciente de una aplicación de correo electrónico, no se detenga la comprobación del correo electrónico..

    Si realmente desea detener una aplicación por completo, puede presionar prolongadamente las tareas recientes para ir a la información de la aplicación y presionar la fuerza para detenerla. La detención forzada es una eliminación completa de la aplicación: se eliminan todos los procesos, se detienen todos los servicios, se eliminan todas las notificaciones, se eliminan todas las alarmas, etc. No se permite que la aplicación se inicie de nuevo hasta que se solicite explícitamente.

    Por lo tanto, parece que el resumen es que al deslizar una aplicación de la lista primero se eliminarán todos los procesos en segundo plano de la aplicación, luego se usa onTaskRemoved para notificar a la aplicación que se eliminó la tarea de fondo. En ese momento parece que depende de la aplicación decidir qué sucede, así que supongo que técnicamente no es una regla estricta sobre lo que sucede con la aplicación más allá de ese punto.


    ¿Tienes algo que agregar a la explicación? Apague el sonido en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange con experiencia en tecnología? Echa un vistazo a la discusión completa aquí.