4 votos

Evitar el gestor de memoria; mantener la aplicación viva

En mi trabajo todos tenemos dispositivos Android que se utilizan para enviarnos trabajos. Utiliza una aplicación web accesible a través de cualquier navegador. Cuando llega un nuevo trabajo se nos notifica con una alerta sonora. Sin embargo, debido a la forma en que Android gestiona la memoria, a menudo "duerme" (no conozco la terminología adecuada) el navegador web, por lo que si recibimos un nuevo trabajo, no se nos notifica a menos que volvamos a abrir manualmente el navegador web para "despertarlo".

¿Hay alguna solución para este problema?

Saludos

1voto

Nick Pierpoint Puntos 7976

Presumiblemente, el dispositivo está utilizando wifi para acceder a Internet - podría valer la pena intentarlo:

  • Ajustes > Wifi
  • Pulse en Menú para abrir Avanzado
  • Pulse sobre esa opción del menú
  • Mantener el Wifi encendido mientras duermes Compruébelo, asegúrese de que está ajustado a Nunca

De esta manera, cuando el dispositivo entra en reposo, el wifi sigue activo y funcionando y la aplicación web debería seguir funcionando y

Cuando llega un nuevo trabajo se nos notifica con una alerta sonora

Editar

La respuesta de arriba no es la correcta, más bien por los comentarios de abajo, esta es sin duda la correcta, en la que cito,.

Tal vez, el enfoque de la gestión de los puestos de trabajo se haga el camino equivocado , especialmente en el contexto de Android - una aplicación personalizada que tiene un servicio utilizando un parcial wake-lock para hacer "ping" comprobando los trabajos, envía un evento a la aplicación y la aplicación se despierta. IMHO, un navegador no es la herramienta adecuada para los requisitos de su caso.

En resumen, no hay nada que se pueda hacer para mantener el navegador "vivo" mientras el dispositivo está durmiendo, ya que Android, entre bastidores, cuando el kernel no está en estado de reposo, está rastreando qué aplicaciones se están ejecutando, y dependiendo de las limitaciones de energía y memoria, especialmente en el caso de una página del navegador web, (si tiene un montón de estilos, cuanto más elaborada sea la página, más recursos acaparará como resultado, especialmente si tiene un montón de Javascript detrás de la página) este podría ser el trabajo del kernel para derribarla y expulsarla de la memoria, por lo tanto no es una ruta fiable.

TL;DR: Una aplicación adecuada en lugar de sólo un navegador web resolverá el problema del OP.

Fuera de tema: Hubo un artículo cubierto por la sección de tecnología en las noticias de la BBC con respecto a la navegación web móvil y cómo puede afectar a la batería debido a la forma en que las páginas web están diseñadas, más bien, que fueron diseñados de forma incorrecta para la plataforma móvil, demasiados estilos, demasiados scripts, por no hablar de Flash, así, todos ellos tenían efectos adversos sobre cómo Android muestra / renderiza la página que a su vez significa una gran cantidad de ciclos de CPU consumidos para hacer precisamente eso.

0voto

Ronald Wildenberg Puntos 18258

La mejor opción sería ajustar los parámetros minfree del Low Memory Killer.

Algunos antecedentes:

El Low Memory Killer es el pilar de la gestión de memoria de Android. Es un enfoque más elegante que el oomkiller de Linux y funciona de forma proactiva para mantener la reserva libre en lugar de activarse sólo cuando te quedas completamente sin memoria libre. Separa las aplicaciones en varias categorías para matarlas si la reserva de memoria libre está por debajo de ciertos puntos. Generalmente están en el siguiente orden, de la primera a la última:

EMPTY_APP - Son aplicaciones que no están haciendo nada, ni esperando hacer nada. Simplemente están sentadas en la memoria.

CONTENT_PROVIDER - Se trata de aplicaciones en segundo plano que proporcionan contenido a las aplicaciones activas (por ejemplo, Play Store utiliza una para buscar actualizaciones periódicamente). HTC Facebook sync es otro ejemplo común).

HIDDEN_APP - Están en segundo plano, sin hacer nada, pero siguen vivas y posiblemente esperando algo.

SECONDARY_SERVER - Servidor que se ejecuta en segundo plano para proporcionar servicios a una aplicación en ejecución.

VISIBLE_APP - Se trata de una aplicación que está en segundo plano, pero que actualmente está haciendo algo.

FOREGROUND_APP - Esto es lo que se está ejecutando actualmente y en pantalla.

Si la reserva de memoria libre cae por debajo de una cierta cantidad (por ejemplo, 80 MB es el valor predeterminado en mi GS3), el sistema primero comenzará a matar a todo lo que aparece como una aplicación vacía hasta que la piscina está de nuevo por encima de esa línea. Si después de eliminar todas las aplicaciones vacías la memoria está todavía por debajo de la siguiente línea (por ejemplo, 64 MB), comenzará con los proveedores de contenido, y así sucesivamente, hasta que finalmente si sólo la aplicación en primer plano está ocupando toda la memoria (en mi GS3, si todo excepto la aplicación en primer plano ha sido eliminada y todavía hay menos de 32 MB de memoria libre) y amenazando al sistema, será eliminada finalmente.

Volviendo a tu pregunta real, lo que queremos hacer es ajustar estos valores a la baja, por lo que el asesino se activará más tarde y es de esperar que no mate el navegador cuando todavía lo quieres abierto.

La aplicación MinFreeManager le permitirá ajustar estos valores. También puede editarlos directamente en /sys/module/lowmemorykiller/parameters/minfree donde los parámetros están en páginas (4 kilobytes, así que un valor de 8192 significa 32MB como ((8192*4)/1024=32MB), y listados en orden inverso a lo que listé arriba. Ambos requerirán Root. Si usted no tiene Root, no hay básicamente nada que podamos hacer para ayudar.

En tu caso, el parámetro HIDDEN_APP (4º elemento en el archivo minfree) es probablemente lo que tenemos que cambiar. Por ejemplo, este parámetro es por defecto 56MB en mi GS3. Reducirlo a la mitad, a 28M, o utilizar el preajuste suave en MinFreeManager sería un buen punto de partida para los ajustes.

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