¿Android intercambia la memoria utilizada por los servicios de primer plano?

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?

¿Intentó simplemente desactivar las actualizaciones automáticas de OTA desde la configuración >> sobre el teléfono?
Buena pregunta. Sí, entré en Configuración -> Acerca del teléfono -> Centro de actualizaciones y seleccioné Desactivado para el ciclo de notificación de actualización
Ya veo, ¿Por qué no congelarlo? Descongele de vez en cuando para evitarle problemas adicionales

Respuestas (1)

Usted dijo :

(al deshabilitar su receptor de transmisión)


Primero déjame señalar que Broadcast Receivery Serviceno 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 :

  • Citando al mismo autor del mismo artículo:

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

Siempre debe citar la(s) fuente(s) y acreditar adecuadamente al autor. Siga Cómo hacer referencia al material escrito por otros . ¿Quizás te lo perdiste?
@Firelord No sé cómo hacer la réplica exacta, espero que lo que hice esté bien
¡¡¡GUAU!!! ¡Gran respuesta! ¡Muchas gracias! Aprendí mucho de tu respuesta. ¡Gracias! Solo para obtener más información, ¿sería tan exitoso (o más) deshabilitar los servicios que deshabilitar la aplicación? Ver: android.stackexchange.com/questions/129427/…
@RockPaperLizard el problema en esa pregunta es un error, el sistema debe ignorar una aplicación deshabilitada, no se incluirá en las aplicaciones instaladas y el administrador de paquetes no debería enumerarla, si tiene el botón de deshabilitar en la configuración, haga clic en él y confirme que está listo para no continuar con el trabajo complicado, el método adb y el método de desactivación son prácticamente los mismos, le está diciendo al administrador de paquetes que debe ignorar esta aplicación tal como lo hace con la 'aplicación del asistente de configuración' que se desactiva después la primera configuración, ¿ve el asistente de configuración en algún lugar después del primer arranque? nunca .
Gracias. Comenzaré por deshabilitar la aplicación. Tenga en cuenta que deshabilitar los Servicios es tan fácil como deshabilitar la aplicación cuando usa MyAndroidTools: play.google.com/store/apps/details?id=cn.wq.myandroidtools
Ya veo, creo que deshabilitar toda la aplicación será más seguro y efectivo, pero como dicen, todos los caminos te llevan a Roma, tienes que elegir un camino.