JetPack之LifeCycle生命周期管理的使用

1,LifeCycle的的使用主要解决

  • 代码的入侵问题
  • 内存泄漏的问题
  • 统一管理的问题

主要用于Activity/Fragment/Service,App的生命周期的监听,做一些全局的操作,实现解耦
使用场景如下:
1)在BaseActivity中添加注册监听,在onStop中取消当前界面指定的网络请求
2)定位的开启和关闭

使用步骤:
1)创建监听处理的对象,实现LifeCycleObserver的接口
2)在需要的方法上添加OnLifeCycleEvent的注解
class LocationListener :LifecycleObserver{

@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
private fun startLocationAction(){
    /**
     * 打开定位
     */
}

@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
private fun stopLocationAction(){
    /**
     * 关闭定位
     */
}

}

3)在Activity的OnCreate方法中添加注册监听
val locationListener = LocationListener()
lifecycle.addObserver(locationListener)

2,LifeCycleService的基本使用
LifeCycleService主要用于监听Service的生命周期,达到Service与组件间的解耦,使用时实现LifeCycleObserver 接口,并添加lifecycle-extensions的依赖,使用的Service需要继承至LifecycleService
试例如下
1)创建ServerObserver监听对象
class SocketServiceObserver :LifecycleObserver {

@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
private fun connectSocket(){
    /**
     * 当Service的onCreate方法被调用时,该方法会被调用
     */
}

@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
private fun disConnectSocket(){
    /**
     * 当Service的onDestroy方法被调用时,该方法会被调用
     */
}

}

2)创建Service继承至LifecycleService,在init方法中创建监听对象并添加注册监听
class SocketService : LifecycleService() {

init {
    val socketServiceObserver = SocketServiceObserver()
    lifecycle.addObserver(socketServiceObserver)
}

}

3,ProcessLifecycleOwner的使用
使用ProcessLifecycleOwner可以监听应用前后台之间的切换
使用实例如下:
1)创建Kotlin类 实现LifecycleObserver的接口
class AppObserver :LifecycleObserver {

@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun onCreate(){
    /**
     * 在应用的整个生命周期中只会调用一次
     */
}

@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onStart(){
    /**
     * 当应用在前台时被调用
     */
}

@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun onResume(){
    /**
     * 当应用在前台出现时调用
     */
}

@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun onPause(){
    /**
     * 当应用推出到后台时被调用
     */
}

@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onStop(){
    /**
     * 当应用推出到后台时被调用
     */
}

@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun onDestroy(){
    //永远不会被调用
}

}

2)在Application的onCreate方法中添加注册监听
class LifeCycleApp :Application() {

override fun onCreate() {
    super.onCreate()
    val appObserver = AppObserver()
    ProcessLifecycleOwner.get().lifecycle.addObserver(appObserver)
}

}

完成之后,即可实现App生命周期的监听,实现业务间的解耦

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值