我知道这是一篇旧帖子,正如大卫瓦瑟的上述回答是过去最好的解决方案......现在有一种更好的做事方式。
使用 来完成所有这些工作的更好方法ProcessLifecycleOwner
,它就是为此而设计的。简而言之,来自 JavaDoc:
“为整个应用程序过程提供生命周期的类。”
如果您的应用程序被终止,应用程序生命周期 onDestroy 将被调用,这使您可以创造性地按照自己的意愿进行跟踪。它可以像设置一个 SharedPreference 标志一样简单,您可以在应用程序重新启动不正确时检查该标志。
请注意,您需要添加适当android.arch
的依赖项以利用新LifecycleObserver
的 ,ProcessLifecycleOwner
等。
下面是如何处理整个应用程序的每个 LifecycleEvent 的示例。
public class MyApplication extends Application implements LifecycleObserver {
@Override public void onCreate() {
super.onCreate();
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
}
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
public void onCreate(){
// ... Awesome stuff
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onStart(){
// ... Awesome stuff
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void onResume(){
// ... Awesome stuff
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
public void onPause(){
// ... Awesome stuff
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onStop(){
// ... Awesome stuff
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void onDestory(){
// ... Awesome stuff
}
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
public void onAny(){
// ... Awesome stuff
}
}
这是一篇不错的文章,我通过 Kotlin 示例了解了这一点,并在这篇文章之外提供了一些技巧:Background and Foreground events with Android Architecture Components