Detener los servicios y las alarmas cuando termina la aplicación: Android
-
25-09-2019 - |
Pregunta
Tengo una aplicación que consta de varias actividades. Cuando se inicia la aplicación, algunas alarmas se programan utilizando AlarmManager
y algunos servicios se inician:
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
a.setInexactRepeating(...)
....
Me gustaría saber alguna forma de garantiza cada servicio se detiene y cada alarma está programada cuando el usuario sale de la aplicación .
El problema es que el usuario puede salir de la aplicación de diferentes actividades, y eso no me gusta la idea de la sustitución del método onDestroy
en cada actividad. ¿Hay alguna Intent
conocida puedo recibir cuando finaliza la aplicación?
También he encontrado que una aplicación para Android puede tener una clase que se extiende desde Application
, con un método onTerminate
:
public class MyApplication extends Application {
@Override
public void onTerminate() {
...
}
}
Sin embargo, la documentación es muy clara: "no dependen de este método se llama; en muchos casos un proceso de solicitud que no sean necesarios, simplemente será matado por el núcleo sin ejecutar ningún código de la aplicación"
Cualquier sugerencia es muy apreciada.
Solución
Me gustaría saber alguna forma de garantizar a cada servicio se para y cada alarma se no programadas cuando el el usuario sale de la aplicación.
No hay tal cosa como "usuario sale de la aplicación" en Android.
¿Hay algún conocido que puedo Intención recibir cuando los extremos de aplicación?
No.
También he encontrado que un Android aplicación puede tener una clase que se extiende desde la aplicación, con una método onTerminate
Esto se llama, en muchos casos, en algún momento después hay componentes que se ejecutan no más. En su caso, hay que ejecuta componentes (servicios).
Sin embargo, la documentación es muy clara: "Nunca dependa de este ser método llamado; en muchos casos, una que no sean necesarios proceso de solicitud será simplemente matado por el núcleo sin ejecutar cualquier código de la aplicación "
El único caso que conozco de cuando no se llamará es si el proceso está siendo terminado, en cuyo caso su servicio será eliminado también, aunque las alarmas programadas no.