0

我有一个包含多个活动的应用程序。当应用程序启动时,一些警报被安排使用AlarmManager并启动一些服务:

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

我想知道当用户退出应用程序时有什么方法可以保证每个服务都停止并且每个警报都没有安排

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

我还发现一个 Android 应用程序可以有一个从 扩展的类Application,带有一个onTerminate方法:

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

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

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

4

1 回答 1

2

我想知道当用户退出应用程序时,有什么方法可以保证每个服务都停止并且每个警报都没有安排。

Android中没有“用户退出应用程序”之类的东西。

申请结束时我可以收到任何已知的 Intent 吗?

不。

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

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

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

我知道何时不会调用它的唯一情况是进程是否正在终止,在这种情况下,您的服务也将被取消,尽管预定的警报不会。

于 2010-08-03T21:52:54.223 回答