Cómo ejecutar un subproceso en segundo plano después de que la aplicación se ha eliminado

Quiero proporcionar al usuario notificaciones de tostadas cada 'x' minutos, he intentado hacer esto con la ayuda de servicio, pero cuando la aplicación se mató, el servicio se detiene. El mismo problema se produce con el servicio de intención, ¿qué debo hacer para mantener un hilo / servicio en la memoria incluso después de que la aplicación se ha matado?

Los términos de su pregunta son un poco confusos:

  • La aplicación se encuentra en un proceso. Si el proceso se destruye, entonces todo lo que se ejecuta en ese proceso se destruye.
  • Si quieres algo para sobrevivir a la muerte de ese proceso, deberías usar un segundo proceso y ejecutarlo para sobrevivir dentro de él.
  • Un servicio se puede ejecutar en su propio proceso, parece una buena opción aquí. Observe el atributo android: proceso en la etiqueta de servicio: http://developer.android.com/guide/topics/manifest/service-element.html

Pero lo que usted quiere hacer es tal vez más simple: establecer una tarea de repetición. Para ello, puede utilizar el administrador de alarmas .

Usted puede, por ejemplo:

  • Proporcionar al administrador de alarmas una intención pendiente
  • La intención pendiente activará un servicio propio
  • El servicio nos despertó, luego ejecutar. Esto tiene la ventaja de no dejar que su servicio siempre se ejecute y contar el tiempo para saber cuándo tiene que despertar (lo que drenaría la batería). Aquí el administrador de alarmas lo despertará cuando sea necesario, su servicio sólo ejecutará su tarea y morirá.

Si combina este enfoque con la primera parte de esa respuesta, ejecute su servicio en un proceso diferente, entonces puede lograr algo que sea realmente ligero para el dispositivo Android: sólo su servicio (en su propio proceso) se despertará a intervalos determinados , Y el proceso de la aplicación no será lanzado por esta alarma, sino sólo el proceso del servicio.

Y sobre las notificaciones de brindis, sí, un servicio es un buen lugar para hacerlo, pero la barra de notificación puede ser más apropiado para mostrar las notificaciones y notificar al usuario que algún evento tuvo lugar dentro de un servicio de fondo.

Intente implementar el servicio de primer plano. Servicio de primer plano

El servicio de primer plano muestra la notificación y nunca se detiene hasta que quiera.

Implementar este fragmento de código en el servicio onCreate

 Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text), System.currentTimeMillis()); Intent notificationIntent = new Intent(this, ExampleActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); notification.setLatestEventInfo(this, getText(R.string.notification_title), getText(R.string.notification_message), pendingIntent); startForeground(ONGOING_NOTIFICATION_ID, notification); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.