我正在尝试(至少部分地)确定应用程序何时被用户关闭以释放一些连接等。为此,我使用 ProcessLifecycleOwner
和我的应用程序类实现 LifecycleObserver
。尽管从教程和其他有用的文章中获取了起始代码,但它似乎没有检测到任何生命周期事件。
大部分代码来自this example .
我的应用类:
public class App extends Application implements LifecycleObserver {
@Override
public void onCreate() {
super.onCreate();
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
}
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
public void created() {
Log.d("SampleLifeCycle", "ON_CREATE");
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void started() {
Log.d("SampleLifeCycle", "ON_START");
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void resumed() {
Log.d("SampleLifeCycle", "ON_RESUME");
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
public void paused() {
Log.d("SampleLifeCycle", "ON_PAUSE");
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void stopped() {
Log.d("SampleLifeCycle", "ON_STOP");
}
}
Gradle 中的依赖
dependencies {
//...
implementation 'android.arch.lifecycle:extensions:1.1.1'
}
到目前为止,这段代码还没有记录任何类型的事件,无论应用是进入前台还是后台。
编辑
注意:您需要在 list 中声明您的应用程序,以便在您的自定义应用程序类中工作。
最佳答案
你需要相应的注解处理器来关注那些注解:
annotationProcessor 'android.arch.lifecycle:compiler:1.1.1'
或者,启用 Java 8 支持,并切换到 DefaultLifecycleObserver
。
关于java - 如何使用 ProcessLifecycleOwner 捕捉生命周期事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56780722/