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

手机游戏开发者 2024-10-5 08:06:11 8 0 来自 中国
在一样寻常Android开辟当中,我们肯定会碰到App的生命周期的需求。在lifecycle的扩展库当中有提供一个ProcessLifecycIeOwner帮我们实现对App的生命感知,这篇博客就来分享ProcessLifecycIeOwner的知识,渴望对看文章的小同伴有所启发。
导入依靠

这个类须要我们导入一个扩展库,依靠语句如下所示:
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'使用代码示例

1.创建一个AppObserver实现LifecycleObserver接口:
import androidx.lifecycle.LifecycleObserverclass 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.Applicationimport androidx.lifecycle.ProcessLifecycleOwnerclass 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.Logimport androidx.lifecycle.Lifecycleimport androidx.lifecycle.LifecycleObserverimport androidx.lifecycle.OnLifecycleEventclass 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"    }}
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 16:55, Processed in 0.155300 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表