Android:应用程序结束时停止服务和警报

时间:2010-08-03 21:21:38

标签: android android-alarms

我有一个包含多个活动的应用程序。应用程序启动时,会使用AlarmManager计划某些警报并启动某些服务:

AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
a.setInexactRepeating(...)
....

我想知道如何保证每个服务都停止,并且当用户退出应用程序时,每个警报都不会安排

问题是用户可以从不同的活动中离开应用程序,我不喜欢在每个Activity中覆盖onDestroy方法的想法。申请结束时我能收到任何已知的Intent吗?

我还发现Android应用程序的类可以Application扩展,使用onTerminate方法:

public class MyApplication extends Application { 
    @Override
    public void onTerminate() {
        ...
    }
}

但是文档非常明确:“永远不会依赖于调用此方法;在许多情况下,不需要的应用程序进程将被内核简单地杀死而不执行任何应用程序代码”

任何建议都受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

  

我想知道任何方式   保证每项服务都停止   每个警报都是不定时的   用户退出应用程序。

在Android中没有“用户退出应用程序”这样的东西。

  

我能否知道任何已知的意图   在申请结束时收到?

没有

  

我还发现了一款​​Android   应用程序可以有一个类   从应用程序扩展,带有   onTerminate方法

在许多情况下,在没有更多运行组件之后的某个时间,这将被调用。在您的情况下,有运行的组件(服务)。

  

但文档很清楚:   “永远不要依赖这种方法   所谓的;在许多情况下是不需要的   申请过程就是这样   内核杀死而不执行   任何应用程序代码“

我知道的唯一一个不会被调用的情况是,如果进程被终止,在这种情况下你的服务也将被淘汰,虽然预定的警报不会被淘汰。