Cómo hacer que una aplicación de Android se ejecute constantemente durante más de un mes

Jens está en el camino correcto con un Servicio, pero con algunos pequeños ajustes:

  1. No debe temer que el sistema elimine su servicio (o su aplicación). En cambio, debe esperarlo y desarrollar el Servicio para que maneje esa situación. Mira aquí Servicios | Desarrolladores de Android para saber cómo hacerlo. Al igual que con las aplicaciones, si se cancela el Servicio, el sistema lo reiniciará y podrá continuar donde lo dejó. Si eso no resuelve su problema, cuestionaría el diseño de la aplicación.
  2. Si necesita que ese Servicio se inicie en el arranque en lugar de cuando se inicia la aplicación, tendrá que configurar un Receptor de transmisión para escuchar cuándo se inicia el teléfono. Hay una guía en ese mismo sitio para los receptores de difusión.
  3. Algo que se ejecuta en segundo plano que debe ejecutarse durante todo el día no debe tener prioridad de ser un Servicio en primer plano. Eso es abusar de la prioridad en primer plano y no garantiza que no sea asesinado. Un ejemplo de cuándo es apropiado usar la prioridad de primer plano sería un Servicio que reproduce un mp3 que el usuario eligió.

En general, el proceso para hacerlo funcionar sería así:

  1. Mueva la parte de la aplicación que debe ejecutarse todo el día a un Servicio. Cuando el sistema elimina su Servicio, lo reiniciará y podrá continuar donde lo dejó. Dependiendo de lo que esté haciendo, es posible que deba almacenar algún tipo de datos para saber dónde lo dejó.
  2. Inicie ese servicio desde un receptor de difusión si necesita iniciarlo o inícielo desde su actividad cuando se inicie la aplicación.

En una nota al margen, mencionó “el proceso OOM”. Si quiere decir que su aplicación está siendo cerrada por una Excepción OOM, debe mirar la memoria de su aplicación.

EDITAR: Parece que los comentarios fueron eliminados, así que también lo agregaré aquí.

Simplemente reiniciar la aplicación en un intervalo determinado no evita que te maten. Su aplicación simplemente no está manejando la situación en la que es asesinada. Debería reiniciarse mediante la Actividad guardando su estado y / o el Servicio reiniciando correctamente.

No puedes. De vez en cuando, el sistema operativo Android puede matar su aplicación si es necesario, por ejemplo, consumo de memoria, etc.

Lo que puede hacer es iniciar un “servicio” que puede ejecutarse en segundo plano. Si lo convierte en un servicio “en primer plano”, esto le indica al sistema Android que este servicio es muy importante. Le da al servicio más prioridad que otras aplicaciones. Sin embargo, el sistema todavía es capaz de matar este servicio, pero estamos muy cerca de su objetivo.

No sé si puede acercarse más a “ejecutar constantemente” un programa. Si alguien lo hace, por favor deje un comentario.

Lo que pensaría es si es realmente necesario mantener la aplicación en funcionamiento. Tal vez pueda solucionar esto programando la ejecución de algún código de forma regular.