java - 如何使用 ProcessLifecycleOwner 捕获生命周期事件?
问题描述
我试图(至少部分地)确定用户何时关闭应用程序以释放一些连接等。为此,我正在使用ProcessLifecycleOwner
我的应用程序类实现LifecycleObserver
. 尽管从教程和其他有用的文章中获取了起始代码,但它似乎没有检测到任何生命周期事件。
大部分代码都来自这个例子。
我的应用程序类:
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'
}
到目前为止,无论应用程序进入前台还是后台,这段代码都没有记录任何类型的事件。
编辑
注意:您需要在 Manifest 中声明您的应用程序才能在您的自定义应用程序类中工作。
解决方案
你需要相应的注解处理器来关注那些注解:
annotationProcessor 'android.arch.lifecycle:compiler:1.1.1'
或者,启用 Java 8 支持,然后切换到DefaultLifecycleObserver
.
推荐阅读
- json - 如何处理以 json 格式返回的数组?
- android - Android App 与您的设备 android studio 不兼容
- javascript - 将搜索 URL 从搜索页面传递到帖子
- node.js - Sequelize.js - 通过关系 id 列表查找对象
- node.js - 不确定如何查询使用另一个模式定义的子文档
- amazon-web-services - 您可以将自定义跟踪发送到云跟踪吗?
- shell - macOS 10.14.3:外部驱动器安装正常,但不使用 Shell 脚本
- angular - 将 ngClass 用于背景颜色更改的选定值
- django - 不允许使用 405 方法
- android - 我在 Playstore 上传 apk 时遇到问题,它显示警告