Jetpack 之 ProcessLifecycleOwner

4,089 阅读1分钟

  在上一篇中我们介绍了如何使用LifecycleService介绍来监听Service的生命周期,本篇我们将介绍使用ProcessLifecycleOwner监听应用程序的生命周期。ProcessLifecycleOwner将监控应用程序当前处于前台还是后台,或者是从后台回到前台时,我们可以收到通知。

1.使用ProcessLifecycleOwner监听应用程序的生命周期

(1)首先我们需要在app的build.gradle文件中添加相关依赖:

dependencies {
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
}

(2)创建ApplicationObserver用于监听App生命周期,实现LifecycleObserver接口,具体代码如下:

public class ApplicationObserver implements LifecycleObserver {
    private static String TAG = "ApplicationObserver";

    /**
     * App创建时执行一次
     */
    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    private void onCreate(){
        Log.d(TAG,"onCreate");
    }

    /**
     * App回到前台时被调用
     */
    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    private void onStart(){
        Log.d(TAG,"onStart");
    }

    /**
     * App回到前台时被调用
     */
    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    private void onResume(){
        Log.d(TAG,"onResume");
    }

    /**
     * App退到后台时调用
     */
    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    private void onPause(){
        Log.d(TAG,"onPause");
    }

    /**
     *  App退到后台时调用
     */
    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    private void onStop(){
        Log.d(TAG,"onStop");
    }

    /**
     * 系统不会分发ON_DESTROY事件,永远不会被调用
     */
    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    private void onDestroy(){
        Log.d(TAG,"onDistory");
    }
}

(3)定义Application并注册ApplicationObserver,具体代码如下:

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ProcessLifecycleOwner.get().getLifecycle().addObserver(new ApplicationObserver());
    }
}

(4)启动App后,我们看下运行结果:

image.png

至此,使用ProcessLifecycleOwner监听应用程序的生命周期已经全部实现完成,同时Jetpack的整个Lifecycle系列组件也全部介绍完成。在接下来的篇幅中,我们将会开始介绍Navigation系列组件的使用。