Gestión de procesos nativa de Android frente a Greenify

Descargo de responsabilidad: no estoy conectado de ninguna manera con los desarrolladores de Greenify, ni estoy tratando de promover Greenify ni nada. Estoy realmente interesado en las respuestas a estas preguntas.

Descubrí que con muchos dispositivos Android que he administrado, se vuelven más lentos cuantas más aplicaciones se instalan en ellos. Esto es especialmente cierto con las aplicaciones que realizan algún tipo de tareas en segundo plano. A menudo, los dispositivos pueden volverse tan lentos que son realmente dolorosos de usar.

La solución que encontré para esto fue una aplicación llamada Greenify , que uso con privilegios de root y un módulo Xposed. Encuentro que puedo mantener todas las aplicaciones en los dispositivos, pero "ecologizar" todas ellas. (Creo que esto significa que las aplicaciones inactivas se "hibernan" constantemente o se les priva de los recursos del sistema, lo que deja los recursos disponibles para las aplicaciones activas). bastante mínimo. No hace falta decir que considero que Greenify es imprescindible, especialmente en dispositivos con muchas aplicaciones que acaparan recursos y/o hardware limitado.

  1. ¿Android hace algo similar a Greenify de forma nativa? (¿Privar a las aplicaciones en segundo plano de recursos para liberarlas para aplicaciones activas?)

  2. En caso afirmativo, ¿en qué se diferencia Greenify de la gestión de recursos nativa de Android?

Me parece que muchas personas tienen dispositivos Android que tienden a ralentizarse con el tiempo, y muchos de ellos acaban comprando un dispositivo nuevo y más potente una vez cada pocos años. Pero si usaron Greenify (o algo similar), podrían haber estado satisfechos con el rendimiento del dispositivo anterior durante muchos, muchos años más. Yo, por ejemplo, tengo un teléfono de cinco años, tengo toneladas de aplicaciones y estoy muy contento con su rendimiento cuando uso Greenify. Sin embargo, sin Greenify (y con todas mis aplicaciones), el teléfono es tan lento que apenas se puede utilizar.

  1. ¿Hay alguna forma nativa de Android para evitar que las aplicaciones se ejecuten en segundo plano y acaparen los recursos del sistema?

Por ejemplo, en las distribuciones de GNU/Linux como Debian y Ubuntu, las aplicaciones no se ejecutan ni consumen ningún recurso a menos que las inicie explícitamente (o las configure para iniciarse al inicio). Es lo mismo con OS X y Windows. Y cuando cierra un programa por completo, ya no puede consumir ningún recurso. Creo que incluso iOS elimina automáticamente las aplicaciones en segundo plano cuando necesita los recursos para otra cosa.

He usado asesinos de tareas manuales, pero después de un tiempo, descubro que todas las aplicaciones vuelven a ejecutarse en segundo plano, incluso si no las he iniciado en absoluto.

  1. ¿Es cierto que Android es algo único al permitir que las aplicaciones se ejecuten en segundo plano, consumiendo recursos?
Ya se ha argumentado que las aplicaciones de gestión de rendimiento son más un daño que una ventaja en los dispositivos Android. El hecho es que el kernel de un dispositivo Android es una derivación del kernel de Linux, por lo que los dispositivos ya deberían saber administrar sus recursos sin necesidad de aplicaciones externas. Además, en el tema de eliminar una aplicación, hay una gran desventaja: cada vez que la vuelves a iniciar, el uso de la batería supera el uso que experimentarías si la dejaras en segundo plano. Esto se debe a que la mayoría de los dispositivos Android ya saben cómo manejarse.
El comando: am force-stop PACKAGE. Eso es todo.
@Firelord ¿Es cierto que Greenify es un poco más avanzado que un asesino de tareas normal? ¿Qué hace con sus privilegios de root y el módulo Xposed?
Esta es una publicación antigua pero aún puede ser relevante: forum.xda-developers.com/…
@Firelord De hecho, muy relevante.

Respuestas (2)

  1. Android en realidad cierra algunas aplicaciones en segundo plano, pero solo cuando faltan recursos del sistema (por ejemplo, abres un juego masivo)

  2. Greenify se diferencia de la administración de memoria de Android por el hecho de que elimina todas las aplicaciones que especificó a voluntad o después de cierto tiempo, no solo cuando faltan recursos.

  3. No. Si algunas aplicaciones del sistema que no usa se ejecutan en segundo plano, puede deshabilitarlas o eliminarlas por completo con una aplicación raíz o eladb shell

  4. Aquí está la lista de cosas que sé que pueden iniciar una actividad en segundo plano y mantenerla abierta:

    • Las aplicaciones pueden iniciar una actividad automáticamente al iniciar el sistema con un permiso.
    • También puede iniciar uno cuando se abre.
    • Una vulnerabilidad en Android 4.3 y versiones anteriores permite que la aplicación las mantenga activas, incluso cuando el asesino de tareas de Android intenta eliminar aplicaciones, pero Greenify puede solucionar esto (consulte la configuración experimental).

Y @DeathMaskSalesman, un HTC Wildfire S que ejecuta KitKat necesita Greenify, o de lo contrario funcionará increíblemente lento y consumirá mucha batería, más de lo que se necesita para iniciar una aplicación.

Desde el sitio de desarrolladores de Android :

  • Si una actividad ha perdido el foco pero aún está visible (es decir, una actividad nueva que no es de tamaño completo o transparente tiene el foco encima de su actividad), se detiene . Una actividad en pausa está completamente viva (mantiene toda la información de estado y miembros y permanece adjunta al administrador de ventanas), pero el sistema puede eliminarla en situaciones de memoria extremadamente baja.
  • Si una actividad queda completamente oscurecida por otra actividad, se detiene . Todavía conserva toda la información de estado y miembro, sin embargo, ya no es visible para el usuario, por lo que su ventana está oculta y, a menudo, el sistema la eliminará cuando se necesite memoria en otro lugar.
  • Si una actividad se pausa o se detiene, el sistema puede eliminar la actividad de la memoria pidiéndole que finalice o simplemente eliminando su proceso. Cuando se vuelve a mostrar al usuario, debe reiniciarse por completo y restaurarse a su estado anterior.

también :

Por lo tanto, a medida que el sistema se queda sin memoria, puede matar procesos [...] comenzando con el proceso que se usó menos recientemente, pero también teniendo en cuenta qué procesos requieren más memoria.

En lo que respecta a la implementación técnica, el sistema llama a las aplicaciones para informarles que necesitan liberar memoria o corren el riesgo de ser eliminadas:

Además, cuando el proceso de su aplicación está actualmente en caché, puede recibir uno de los siguientes niveles de onTrimMemory():

  • TRIM_MEMORY_BACKGROUND

    El sistema se está quedando sin memoria y su proceso está cerca del comienzo de la lista LRU. Aunque el proceso de su aplicación no corre un alto riesgo de ser eliminado, es posible que el sistema ya esté eliminando procesos en la memoria caché de LRU. Debe liberar recursos que sean fáciles de recuperar para que su proceso permanezca en la lista y se reanude rápidamente cuando el usuario regrese a su aplicación.

  • TRIM_MEMORY_MODERAR

    El sistema se está quedando sin memoria y su proceso está cerca de la mitad de la lista de LRU. Si el sistema se vuelve más limitado por la memoria, existe la posibilidad de que su proceso se elimine.

  • TRIM_MEMORY_COMPLETE

    El sistema se está quedando sin memoria y su proceso es uno de los primeros en morir si el sistema no recupera la memoria ahora. Debe liberar todo lo que no sea crítico para reanudar el estado de su aplicación.

Entonces, para responder directamente a sus preguntas:

  1. No, Android no limpia nada para las aplicaciones, pero les permite saber que lo hagan ellos mismos y las mata si no lo hacen (o si no es suficiente).

  2. Greenify parece desactivar las aplicaciones "sobre la marcha", por lo que no se permite ejecutar nada cuando está en segundo plano (y no se puede iniciar automáticamente cuando no se está ejecutando), pero aún puede hacer cualquier cosa cuando está en primer plano. Esto es completamente diferente de cómo lo hace Android como se ve arriba.

  3. Sí, deshabilítelos (desde Configuración → Aplicaciones → <Nombre de la aplicación>) (aunque tendrá que volver a habilitarlos cuando quiera ejecutarlos manualmente). O, para aquellos que no tienen servicios de reinicio automático, simplemente elimínelos (es decir, mantenga presionado el botón Menú y deslícelos). Esto último no evitará que se reinicien si el sistema les envía un Intent, etc.

  4. No, en absoluto. La verdadera multitarea ha estado disponible durante mucho tiempo en los dispositivos móviles: el iPhone original era una rareza cuando se lanzó sin esa capacidad.

Este sistema suena muy bien en teoría. Entonces, ¿cómo es que muchos dispositivos se vuelven más lentos cuanto más aplicaciones instalas en ellos? Como los ejemplos descritos por mí y Charles.milette? ¿No debería el sistema descrito prevenir esa tendencia?
@Fiksdal La falla recae principalmente en los desarrolladores de aplicaciones que no saben cómo suspender tareas de manera adecuada, liberar memoria o usar oyentes de bajo consumo. Sin embargo, algunas aplicaciones realmente requieren receptores activos (como una aplicación para gestos personalizados que necesita recibir su entrada en cualquier momento) o tendrán servicios de notificación, etc. No importa cuán livianos sean, se sumarán si instala muchos de ellos. . No es diferente a instalar muchas aplicaciones con servicios de actualización, interfaces de bandeja, etc. en un sistema operativo de escritorio.
Si desea mantener dichas aplicaciones para uso manual, pero no quiere que las cosas automáticas agoten su batería cuando no las está usando activamente, Greenify es una solución decente (pero tiene sus propios gastos generales, ya que tiene que ejecutar un servicio para administrar aplicaciones "en vivo").
Muy bien, eso tiene sentido