Omitir administrador de memoria; mantener viva la aplicación

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 web. Cuando llega un nuevo trabajo, se nos notifica con una alerta audible. Sin embargo, debido a la forma en que Android maneja la memoria, a menudo "suspende" (no conoce la terminología adecuada) el navegador web, por lo que si obtenemos un nuevo trabajo, no se nos notifica a menos que volvamos a abrir manualmente la web. navegador para "despertarlo".

¿Hay alguna solución para este problema?

Salud

1. El dispositivo también debe tener una aplicación 2. ¿No es mejor simplemente enviar un correo electrónico, tal vez desde la propia aplicación web? 3. No dejes que la pantalla se duerma y recibirás la notificación.
@roxan: ¿por qué el comentario 2 horas después del comentario debajo de la respuesta que publiqué lo decía todo?
@ t0mm13b Lo siento, no vi su respuesta desde la ventana de revisión.

Respuestas (2)

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

  • Ajustes > Wi-Fi
  • Presiona Menú para que aparezca Avanzado
  • Toque en esa opción de menú
  • Mantenga Wifi encendido durante el sueño , verifique eso, asegúrese de que esté configurado en Nunca

De esa manera, cuando el dispositivo se va a dormir, el wifi aún está activo y funcionando y la aplicación web aún debería funcionar y

Cuando llega un nuevo trabajo, se nos notifica con una alerta audible

Editar

La respuesta anterior no es la respuesta correcta, más bien de los comentarios a continuación, esta es definitivamente la que cito.

Tal vez, el enfoque para administrar los trabajos se hace de manera incorrecta , especialmente en el contexto de Android: una aplicación personalizada que tiene un servicio que usa un bloqueo de activación parcial para "hacer ping" al verificar trabajos, enviar un evento a la aplicación y la aplicación se levanta. En mi humilde opinión, un navegador no es la herramienta adecuada para los requisitos en su caso.

En resumen, no se puede hacer nada para mantener el navegador web "vivo" mientras el dispositivo está inactivo, ya que Android, detrás de escena, cuando el kernel no está en estado inactivo, está rastreando qué aplicaciones se están ejecutando y dependiendo sobre las limitaciones de energía y memoria, especialmente en el caso de una página de navegador web (si tiene muchos estilos, cuanto más elaborada sea la página, más recursos acumulará como resultado, especialmente si tiene mucho Javascript detrás) la página) este podría ser el trabajo para que el núcleo lo derribe y lo expulse de la memoria, por lo tanto, no es una ruta confiable a tomar.

TL; DR: una aplicación adecuada en lugar de solo 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 la batería debido a la forma en que las páginas web están diseñadas, más bien, fueron diseñadas incorrectamente para la plataforma móvil, demasiados estilos, demasiadas secuencias de comandos, sin mencionar Flash también, todos tuvieron un efecto adverso en la forma en que Android muestra/presenta la página, lo que a su vez significó una gran cantidad de ciclos de CPU consumidos para hacer precisamente eso.

Es probable que esto no sea un problema con wifi, sino que el propio Android suspende la aplicación del navegador después de un largo período de inactividad para liberar esa memoria para otra cosa. Pero no conozco ninguna manera de evitar que suceda.
Tal vez, el enfoque para administrar los trabajos se hace de manera incorrecta, especialmente en el contexto de Android: una aplicación personalizada que tiene un servicio que usa un wakelock parcial para "hacer ping" al verificar los trabajos, enviar un evento a la aplicación y la aplicación se activa . En mi humilde opinión, un navegador no es la herramienta adecuada para los requisitos en su caso... :)
Estoy de acuerdo con ésto. El navegador en un dispositivo móvil ciertamente no es la mejor manera de lograr esto. Creo que la mejor opción sería crear una aplicación compatible con Cloud to Device Messaging (C2DM) de Android. Esto permitiría que el servidor notifique la aplicación sin necesidad de que la aplicación esté abierta o incluso ejecutándose.
Acabamos de migrar de Win Mo, que era una aplicación, pero ahora está basado en la web. Sí, el verdadero problema es la gestión de la memoria en Android que duerme el navegador para liberar memoria, nada que ver con el Wi-Fi (además, estamos en datos móviles el 95% del tiempo), y no sería mejor no tener correo electrónico, los datos necesitan ser entrada que es mucho más fácil y rápido a través de una aplicación. Estoy de acuerdo, una aplicación web no es la forma correcta, debería haber sido una aplicación, pero desafortunadamente no es así. ¿Alguien más sabe cómo mantener el navegador "vivo" en la memoria?

La mejor opción sería ajustar los parámetros minfree del asesino de memoria baja.

Algunos antecedentes:

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 manera proactiva para mantener el grupo libre en lugar de solo activarse cuando se queda completamente sin memoria libre. Separa las aplicaciones en varias categorías para matar si el grupo de memoria libre está por debajo de ciertos puntos. Por lo general, están en el siguiente orden, desde el primero en morir hasta el último:

EMPTY_APP: son aplicaciones que no hacen nada ni esperan para hacer nada. Simplemente están sentados en la memoria.

CONTENT_PROVIDER: estas son aplicaciones en segundo plano que contienen contenido para aplicaciones activas (por ejemplo, Play Store usa una para buscar actualizaciones periódicamente. HTC Facebook Sync es otro ejemplo común).

HIDDEN_APP: están sentados en segundo plano, sin hacer nada, pero aún están vivos y posiblemente esperando algo.

SECONDARY_SERVER: un servidor que se ejecuta en segundo plano para proporcionar servicios para una aplicación que se está ejecutando actualmente.

VISIBLE_APP: esta es una aplicación que está en segundo plano, pero actualmente está haciendo algo.

FOREGROUND_APP: esto es lo que se está ejecutando actualmente y en la pantalla.

Si el grupo de memoria libre cae por debajo de cierta cantidad (por ejemplo, 80 MB es el valor predeterminado en mi GS3), el sistema primero comenzará a eliminar todo lo que aparezca como una aplicación vacía hasta que el grupo vuelva a estar por encima de esa línea. Si después de eliminar todas las aplicaciones vacías, la memoria aún está por debajo de la siguiente línea (por ejemplo, 64 MB), comenzará en los proveedores de contenido, y así sucesivamente, hasta que finalmente, si solo la aplicación en primer plano ocupa toda la memoria (en mi GS3, si todo, excepto la aplicación de primer plano, se eliminó y todavía hay menos de 32 MB de memoria libre) y amenaza el sistema, eventualmente se eliminará.

Volviendo a su pregunta real, lo que queremos hacer es ajustar estos valores hacia abajo, de modo que el asesino se active más tarde y, con suerte, no elimine el navegador cuando aún desee abrirlo.

La aplicación MinFreeManager le permitirá ajustar estos valores. Alternativamente, se pueden editar directamente en /sys/module/lowmemorykiller/parameters/minfreedonde están los parámetros en las páginas (4 kilobytes, por lo que un valor de 8192 significa 32 MB como ((8192 * 4)/1024 = 32 MB), y se enumeran en orden inverso al que mencioné anteriormente. Ambos de estos requerirá root Si no tiene root, básicamente no hay nada que podamos hacer para ayudar.

En su caso, el parámetro HIDDEN_APP (cuarto elemento en el archivo minfree) es probablemente lo que necesitamos cambiar. Por ejemplo, este parámetro es por defecto 56 MB en mi GS3. Reducir esto a la mitad a 28M o usar el preajuste suave en MinFreeManager sería un buen punto de partida para ajustar.

El OP no menciona si están rooteados o no, pero teniendo en cuenta la pregunta del OP, es un dispositivo designado para el trabajo (posiblemente no el OP pero es propiedad de su empresa), ¡así que su respuesta no es exactamente acertada! ¡Y la aplicación MinFreeManager requiere root y también, el OP no tiene la intención de meterse con el dispositivo en cuestión también! :)