Mirando un dispositivo Android KitKat fabricado por LG, veo que una aplicación llamada siempreSoftware Update
se ejecuta como un servicio de primer plano (100). Ese servicio ocupa una cantidad significativa de memoria.
Por lo que puedo decir, esa aplicación es solo para actualizaciones de OTA, lo cual es un evento excepcionalmente raro (¡nunca ha sucedido hasta ahora!).
Para liberar algo de memoria de trabajo, estaba pensando en evitar que la aplicación se inicie en el arranque (deshabilitando su receptor de transmisión) y luego simplemente ejecutarla manualmente de vez en cuando para buscar actualizaciones.
Pero antes de hacer eso, quiero preguntar si es importante. Para las aplicaciones que siempre ejecutan un servicio en primer plano, ¿Android simplemente las sacará de la memoria como una aplicación en segundo plano? ¿O la memoria que usan está completamente bloqueada en todo momento, lo que hace que mi plan valga la pena?
Usted dijo :
(al deshabilitar su receptor de transmisión)
Primero déjame señalar que Broadcast Receiver
y Service
no es lo mismo, obtendrás la diferencia entre ellos a lo largo de la respuesta.
Receptores de difusión:
Un BroadcastReceiver permite que una aplicación se ejecute, durante un breve período de tiempo, en segundo plano como resultado de que suceda algo más. Al manejar una transmisión, la aplicación recibe un tiempo fijo (actualmente 10 segundos) para que haga su trabajo. Si no se completa en ese tiempo, se considera que la aplicación se está comportando mal, y su proceso pasa inmediatamente al estado de fondo para eliminar la memoria si es necesario.
Entonces, como puede leer, BroadcastReceiver no puede mantener una aplicación ejecutándose en segundo plano durante más de 10 segundos, ¿verdad? por eso hay servicios.
Servicios :
Un servicio permite que una aplicación implemente operaciones en segundo plano de mayor duración. En realidad, hay muchas otras funciones que proporcionan los servicios.
La administración de procesos de Android para servicios es diferente a la de los receptores de transmisión, ya que una cantidad ilimitada de servicios puede solicitar que se ejecuten durante un período de tiempo desconocido. Es posible que no haya suficiente RAM para que se ejecuten todos los servicios solicitados, por lo que, como resultado, no se ofrecen garantías sólidas sobre la capacidad de mantenerlos en funcionamiento.
Si hay muy poca memoria RAM, los procesos que alojan los servicios se eliminarán inmediatamente como lo hacen los procesos en segundo plano. Sin embargo, si corresponde, Android recordará que estos servicios desean seguir ejecutándose y reiniciará su proceso más adelante cuando haya más RAM disponible. Por ejemplo, si el usuario va a una página web que requiere una gran cantidad de RAM, Android puede eliminar los procesos de servicio en segundo plano, como la sincronización, hasta que se agote la memoria del navegador.
Los servicios pueden negociar aún más este comportamiento solicitando que se los considere "en primer plano". Esto coloca al servicio en un estado de "no matar", pero requiere que incluya una notificación al usuario sobre su ejecución activa como reproductores de música, antivirus, etc.
La aplicación debe mostrar una notificación, en su caso, es una aplicación del sistema, no necesita este requisito, puede decirle al sistema que debe estar ejecutándose todo el tiempo y el sistema no lo eliminará solo si el sistema necesita más memoria. y es el único servicio que aún se está ejecutando (¿Cuáles son las probabilidades de que eso suceda?).
Ahora volviendo a su pregunta ¿Valdrá la pena? Creo que es porque es un desperdicio (realmente un desperdicio) de memoria utilizada y no se liberará, sin ningún propósito.
Añadiré :
Es posible que su plan para detener su receptor de transmisión no mantenga el servicio en segundo plano, le recomendaría que deshabilite la aplicación en Configuración> aplicación> todo y haga clic en deshabilitar (si ese botón está allí) o congele la aplicación usando copia de seguridad de titanio.
Ref: http://android-developers.blogspot.com/2010/04/multitasking-android-way.html http://www.howtogeek.com/161225/htg-explains-how-android-manages-processes/ http ://developer.android.com/training/articles/memory.html
Rachid Boudjelida
RockPaperLz- Máscara o ataúd
Rachid Boudjelida