首页 > 随笔 > Android-Jetpack-ProcessLifecycIeOwner监听App的生命周期

Android-Jetpack-ProcessLifecycIeOwner监听App的生命周期

简书 2026-10-11 23:12 4 阅读 查看原文
图片来源网络

在日常Android开发当中,我们肯定会遇到App的生命周期的需求。在lifecycle的扩展库当中有提供一个ProcessLifecycIeOwner帮我们实现对App的生命感知,这篇博客就来分享ProcessLifecycIeOwner的知识,希望对看文章的小伙伴有所启发。

导入依赖

这个类需要我们导入一个扩展库,依赖语句如下所示:

implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' 

使用代码示例

1.创建一个AppObserver实现LifecycleObserver接口:

import androidx.lifecycle.LifecycleObserver class AppObserver : LifecycleObserver{ / * 在App的整个生命周期中只会被调用一次 */ @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) fun onCreate(){ Log.d(TAG,">>>>>>>>>>>>>>>>> onCreate") } / * 在App在前台出现时被调用 */ @OnLifecycleEvent(Lifecycle.Event.ON_START) fun onStart(){ Log.d(TAG,">>>>>>>>>>>>>>>>> onStart") } / * 在App在前台出现时被调用 */ @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) fun onResume(){ Log.d(TAG,">>>>>>>>>>>>>>>>> onResume") } / * 在App退出到后台时被调用 */ @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) fun onPause(){ Log.d(TAG,">>>>>>>>>>>>>>>>> onPause") } / * 在App退出到后台时被调用 */ @OnLifecycleEvent(Lifecycle.Event.ON_STOP) fun onStop(){ Log.d(TAG,">>>>>>>>>>>>>>>>> onStop") } / * 理论上是不会触发这个事件的,因为系统不会分发,在项目当中可以不写这个事件 */ @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) fun onDestroy(){ Log.d(TAG,">>>>>>>>>>>>>>>>> onStop") } companion object { const val TAG = "TAG" } } 

2.在自己的Application当中绑定:

import android.app.Application import androidx.lifecycle.ProcessLifecycleOwner class MyApplication : Application(){ override fun onCreate() { super.onCreate() ProcessLifecycleOwner.get().lifecycle.addObserver(AppObserver()) } } 

调用就是这样的简单,刚兴趣的小伙伴可以在项目当中用起来。目前在项目当中可以获取到App生命周期大概有以下几个:

  • Lifecycle.Event.ON_CREATE;
  • Lifecycle.Event.ON_START;
  • Lifecycle.Event.ON_RESUME;
  • Lifecycle.Event.ON_PAUSE;
  • Lifecycle.Event.ON_STOP;

在使用过程当中需要注意有以下几点:

  • Lifecycle.Event.ON_CREATE,只会调用一次。、
  • Lifecycle.Event.ON_DESTROY,不会有响应的,别写业务代码,要不然就成为BUG了。
  • 当我们直接通过Home键或者其他方式退到后台的情况,会依次调用Lifecycle.Event.ON_PAUSE和Lifecycle.Event.ON_STOP,然后会出现延迟的情况。

完整的AppObserver模板(可复制修改)

import android.util.Log import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.OnLifecycleEvent class AppObserver : LifecycleObserver{ / * 在App的整个生命周期中只会被调用一次 */ @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) fun onCreate(){ Log.d(TAG,">>>>>>>>>>>>>>>>> onCreate") } / * 在App在前台出现时被调用 */ @OnLifecycleEvent(Lifecycle.Event.ON_START) fun onStart(){ Log.d(TAG,">>>>>>>>>>>>>>>>> onStart") } / * 在App在前台出现时被调用 */ @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) fun onResume(){ Log.d(TAG,">>>>>>>>>>>>>>>>> onResume") } / * 在App退出到后台时被调用 */ @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) fun onPause(){ Log.d(TAG,">>>>>>>>>>>>>>>>> onPause") } / * 在App退出到后台时被调用 */ @OnLifecycleEvent(Lifecycle.Event.ON_STOP) fun onStop(){ Log.d(TAG,">>>>>>>>>>>>>>>>> onStop") } companion object { const val TAG = "TAG" } }