观心静

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  422 随笔 :: 0 文章 :: 87 评论 :: 139万 阅读

前言

 ‌ProcessLifecycleOwner‌是Android Jetpack架构中的一个组件,用于监听整个应用程序的生命周期。它允许开发者在应用程序级别监听进程的生命周期事件,例如进程的创建和销毁,从而可以在应用级别执行一些操作,如资源清理、初始化等。

 

监听App的生命周期方式一

fun setStatusListener(){
    ProcessLifecycleOwner.get().lifecycle.addObserver(object :DefaultLifecycleObserver{
        override fun onCreate(owner: LifecycleOwner) {
            super.onCreate(owner)
        }

        override fun onResume(owner: LifecycleOwner) {
            super.onResume(owner)
        }

        override fun onPause(owner: LifecycleOwner) {
            super.onPause(owner)
        }
        override fun onStart(owner: LifecycleOwner) {
            super.onStart(owner)
        }
        override fun onStop(owner: LifecycleOwner) {
            super.onStop(owner)
        }
        override fun onDestroy(owner: LifecycleOwner) {
            super.onDestroy(owner)
        }
    })
}

监听App的生命周期方式二

fun setStatusListener() {
    ProcessLifecycleOwner.get().lifecycle.addObserver(object : LifecycleEventObserver{
        override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
            when(event){
                Lifecycle.Event.ON_CREATE -> {
                    Log.e(TAG, "创建")
                }
                Lifecycle.Event.ON_START -> {
                    Log.e(TAG, "启动")
                }
                Lifecycle.Event.ON_RESUME -> {
                    Log.e(TAG, "恢复")
                }
                Lifecycle.Event.ON_PAUSE -> {
                    Log.e(TAG, "暂停")
                }
                Lifecycle.Event.ON_STOP -> {
                    Log.e(TAG, "停止")
                }
                Lifecycle.Event.ON_DESTROY -> {
                    Log.e(TAG, "销毁")
                }
                Lifecycle.Event.ON_ANY -> {
                    Log.e(TAG, "其他")
                }
            }
        }
    })
}

判断当前App的生命周期

/**
 * 获取当前状态
 */
public fun getCurrentState(): Lifecycle.State {
    return ProcessLifecycleOwner.get().lifecycle.currentState
}

/**
 * 判断是否在前台
 */
fun isAppForeground(): Boolean {
    return getCurrentState() == Lifecycle.State.RESUMED
}

/**
 * 判断是否在初始化
 */
fun isAppBackground(): Boolean {
    return getCurrentState() == Lifecycle.State.INITIALIZED
}
 
end
posted on   观心静  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2019-03-06 Android 开发 Fresco框架点击小图显示全屏大图实现 ZoomableDraweeView
点击右上角即可分享
微信分享提示