首页 > 解决方案 > 如何使用 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 中声明您的应用程序才能在您的自定义应用程序类中工作。

标签: javaandroidandroid-lifecycleandroid-architecture-components

解决方案


你需要相应的注解处理器来关注那些注解:

annotationProcessor 'android.arch.lifecycle:compiler:1.1.1'

或者,启用 Java 8 支持,然后切换到DefaultLifecycleObserver.


推荐阅读