En Ice Cream Sandwich (ICS), el sistema operativo clasifica su aplicación y cada categoría tiene su propio umbral en el que el sistema operativo usa para determinar qué aplicación cerrar primero cuando se queda sin memoria.
¿Alguno de ustedes se ha molestado por decir que abrió un temporizador para que se ejecutara en segundo plano para medir el tiempo transcurrido de algo, luego abrió algunas aplicaciones más y volvió a su temporizador solo para ver que estaba reiniciado o cerrado? Quiero decir, en serio, es realmente terriblemente molesto.
¿Hay alguna manera de obligar a una aplicación a permanecer ejecutándose en segundo plano sin importar qué, incluso cuando el sistema operativo se queda sin memoria?
La respuesta aceptada resultó incorrecta o desactualizada. El módulo "Configuración de la aplicación" para la aplicación Xposed le permite especificar por aplicación para evitar que las aplicaciones se eliminen o liberen:
http://repo.xposed.info/module/de.robv.android.xposed.installer
http://repo.xposed.info/module/de.robv.android.xposed.mods.appsettings
Por supuesto, se debe ejercer un cuidado responsable cuando se juega con aplicaciones que cambian un comportamiento de tan bajo nivel.
Respuesta simple: No. Android siempre usa OOM (Out-Of-Memory) priorizando para liberar memoria no utilizada. Puede cambiar las prioridades de las aplicaciones (al menos hasta que se reinicie) con algunos administradores de tareas, pero incluso si la memoria se agota, las aplicaciones en segundo plano comienzan a ser eliminadas.
Piense en este escenario: ha descargado una aplicación mal codificada que se ejecuta en el arranque, provoca un desbordamiento del búfer y acapara toda su memoria. Normalmente, esta aplicación se elimina, pero si está configurada para permanecer abierta, bloqueará efectivamente su teléfono hasta que se reinicie, y luego comenzará una y otra vez, etc.
Algunos temporizadores usan servicios con altas prioridades para evitar este problema, pero si inicia suficientes aplicaciones de alto rendimiento que consumen muchos recursos mientras el temporizador está en segundo plano, eventualmente se eliminará.
LinkedList
, que no está restringido Integer.MAX_VALUE
por su estructura y puede crecer dinámicamente.Integer.MAX_VALUE
. ¿Por qué crees que las cosas están limitadas de Integer.MAX_VALUE
todos modos?No. Sin embargo, me vienen a la mente dos métodos para aliviar el problema, pero ambos solo pueden ser implementados por el desarrollador: el primero es mostrar una notificación, Android le dará a las aplicaciones que hacen esto una prioridad más alta que otras. El segundo es guardar la hora de inicio para que cuando el temporizador finalmente se reinicie, no se reinicie.
onSaveInstanceState
y onRestoreInstanceState
para proteger el estado de la aplicación, incluida la información del temporizador. No es necesario ejecutar en primer plano. Incluso si es una alarma, podría usarla AlarmManager
para asegurarse de que se ejecute más tarde. La única razón por la que se debe usar el primer plano es: 1. Tiene alguna actividad real en primer plano, como reproducir música o mostrar un video. 2. Quiere mantener abierta una conexión de datos (por ejemplo, IMAP IDLE (push)).1er método: - Si crea Sticky Thread en el programa, sí, puede mantener su programa en ejecución a la fuerza. Sin embargo, recuerde que el usuario en el modo de configuración avanzada puede detener las aplicaciones que se ejecutan en segundo plano. Sin embargo, si escribe un hilo adhesivo de manera que comience en cualquier evento dado, entonces esto se puede lograr.
2do método: SI el usuario no está rooteado en Android y desea ejecutar una aplicación en segundo plano. use el script SL4 en segundo plano desde la aplicación. use un script que le haga verificaciones de antecedentes y programas y escriba el front-end para mostrar algo más.
Por ejemplo: en la mayoría de los motores de juegos, esto está integrado. Se conectan a los servidores aunque el usuario apagó la aplicación. La razón por la que el motor crea múltiples secuencias de comandos en el teléfono que se verifican aleatoriamente en cualquier evento en particular y que TRIGGER se usa para ejecutar su aplicación continuamente en el fondo del primer plano.
*** Lo siento por los errores tipográficos... el corrector ortográfico no está disponible. Espero que logres lo que pretendías obtener.
A veces hay una opción para bloquear la aplicación. Esto evita eliminar o detener esa aplicación en el teléfono.
La opción de bloqueo no está disponible en el sistema operativo en sí, el uso de algunas aplicaciones de terceros como GO Task Manager , etc., puede ayudar.
Flujo