1 votos

La gestión de procesos nativa de Android frente a Greenify

Descargo de responsabilidad: no estoy relacionado de ninguna manera con los desarrolladores de Greenify, ni estoy tratando de promover Greenify ni nada por el estilo. En realidad estoy interesado en las respuestas a estas preguntas.

He comprobado que en muchos dispositivos Android que he manejado, 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 un verdadero dolor de cabeza.

La solución que encontré para esto fue una aplicación llamada Greenify , que uso con privilegios Root y un módulo Xposed. Me parece que puedo mantener todas las aplicaciones en los dispositivos, pero "Greenify" todos ellos. (Creo que esto significa que las apps inactivas son constantemente "hibernadas" o privadas de recursos del sistema, dejando los recursos disponibles para las apps activas). Esto suele hacer que el dispositivo sea mucho más ágil, aunque me parece que el efecto de impedir la funcionalidad de las aplicaciones es bastante mínimo. No hace falta decir que considero que Greenify es imprescindible, especialmente en dispositivos con muchas aplicaciones que acaparan recursos y/o con un hardware limitado.

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

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

Me parece que mucha gente tiene dispositivos Android que tienden a ralentizarse con el tiempo, y muchos de ellos acaban comprando un nuevo dispositivo más potente cada pocos años. Pero si utilizaran Greenify (o algo similar), podrían estar satisfechos con el rendimiento del dispositivo más antiguo durante muchos, muchos años más. Yo, por ejemplo, tengo un teléfono de hace cinco años, tengo toneladas de aplicaciones en él y estoy bastante contento con su rendimiento cuando uso Greenify. Sin embargo, sin Greenify (y con todas mis aplicaciones), el teléfono es tan lento que apenas es utilizable.

  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 lances explícitamente (o las configures para que se lancen al inicio). Y cuando cierras un programa por completo, ya no puede consumir ningún recurso. Creo que incluso iOS mata automáticamente las aplicaciones en segundo plano cuando necesita los recursos para otra cosa.

He utilizado eliminadores de tareas manuales, pero después de un tiempo, me encuentro con que todas las aplicaciones vuelven a ejecutarse en segundo plano, aunque no las haya lanzado.

  1. ¿Es cierto que Android es algo único al permitir que las aplicaciones se ejecuten en segundo plano, consumiendo recursos?

4voto

Matthew Read Puntos 35808

Desde el Sitio para desarrolladores de Android :

  • Si una actividad ha perdido el foco pero sigue siendo visible (es decir, una nueva actividad no completa o transparente tiene el foco encima de su actividad), es pausa . Una actividad en pausa está completamente viva (mantiene toda la información de estado y de los miembros y permanece unida al gestor de ventanas), pero puede ser eliminada por el sistema en situaciones extremas de poca memoria.
  • Si una actividad queda completamente oculta por otra, es se detuvo . Todavía conserva toda la información de estado y de los miembros, sin embargo, ya no es visible para el usuario, por lo que su ventana está oculta y a menudo será eliminada por el sistema 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 termine, o simplemente matando su proceso. Cuando se muestra de nuevo al usuario, debe reiniciarse completamente y restaurarse a su estado anterior.

También :

Así, cuando el sistema se queda sin memoria, puede matar procesos [...] empezando por el proceso menos usado recientemente, pero también teniendo en cuenta qué procesos consumen más memoria.

En cuanto a la implementación técnica, las llamadas del sistema a las aplicaciones para hacerles saber que necesitan liberar la memoria o se arriesgan a ser asesinados:

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

  • TRIM_MEMORY_BACKGROUND

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

  • TRIM_MEMORY_MODERATE

    El sistema se está quedando sin memoria y su proceso está cerca de la mitad de la lista LRU. Si el sistema tiene más limitaciones de memoria, existe la posibilidad de que tu proceso sea eliminado.

  • 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. Debes liberar todo lo que no sea crítico para reanudar el estado de tu aplicación.

Así que para responder directamente a sus preguntas:

  1. No, Android no limpia nada para aplicaciones, pero les hace saber que deben hacerlo ellos mismos y los mata si no lo hacen (o si no es suficiente).

  2. Greenify parece hacer una deshabilitación "sobre la marcha" de las aplicaciones, por lo que no se le permite ejecutar nada cuando está en segundo plano (y no puede iniciarse automáticamente cuando no se está ejecutando), pero todavía 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í: desactívalas (desde Ajustes → Aplicaciones → <Nombre de la aplicación>) (aunque tendrás que volver a activarlas cuando quieras ejecutarlas manualmente). O, en el caso de las que no tienen servicios que se reinician automáticamente, simplemente mátalas (es decir, haz una pulsación larga del botón de Menú y deslízalas). Esto último no impedirá que se reinicien si el sistema les envía una intención, etc.

  4. No, en absoluto. La verdadera multitarea está disponible desde hace tiempo en los dispositivos móviles: el iPhone original fue una rareza cuando se lanzó sin esa capacidad.

3voto

charles.milette Puntos 33
  1. Android realmente cierra algunas aplicaciones en segundo plano, pero sólo cuando faltan recursos del sistema (abres un juego masivo, por ejemplo)

  2. Greenify se diferencia de la gestión de la memoria de Android por el hecho de que mata todas las aplicaciones especificadas a voluntad o después de un cierto tiempo, no sólo cuando faltan recursos.

  3. No. Si algunas aplicaciones del sistema que no utilizas se están ejecutando en segundo plano, puedes desactivarlas o eliminarlas por completo con una aplicación Root o el adb shell

  4. Esta es 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 una cuando se abre.
    • Una vulnerabilidad en Android 4.3 y anteriores permite que las aplicaciones se mantengan activas, incluso cuando el eliminador de tareas de Android intenta matar las aplicaciones, pero Greenify puede solucionar esto (ver la configuración experimental).

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

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X