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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top