Jens está en el camino correcto con un Servicio, pero con algunos pequeños ajustes:
- 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.
- 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.
- 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í:
- 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ó.
- 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.
- ¿El desarrollador de Android Java bien también se aplica para Android?
- ¿Puedo aprender el desarrollo de Android y el desarrollo web en 45 días?
- ¿Por qué alguien preferiría Android a iOS?
- Aplicaciones de Android: ¿Cómo puedo replicar la función de WhatsApp 'haga clic en el nombre del grupo desde la barra de acción' para obtener la lista de miembros del grupo? ¿Cómo puedo agregar una barra de acción en la que se pueda hacer clic y cuyo texto se pueda cambiar al nombre del grupo (¿es una ruleta?)
- ¿Cuáles son las versiones más seguras y eficientes del sistema de Android para móviles?
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.