美文网首页架构JetPackAndroid
Android-Jetpack-ProcessLifecycIe

Android-Jetpack-ProcessLifecycIe

作者: 阿博聊编程 | 来源:发表于2022-04-13 11:37 被阅读0次
    图片来源网络

    在日常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_PAUSELifecycle.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"
        }
    }
    

    相关文章

      网友评论

        本文标题:Android-Jetpack-ProcessLifecycIe

        本文链接:https://www.haomeiwen.com/subject/gaxasrtx.html