Jetpack---LifeCycle 组件内部管理自己的生命周期

1.使用背景:我们希望组件不依赖于页面生命周期的回调方法,同时在生命周期变化的时候也能及时收到通知的背景下使用。

2.原理:观察者模式:两个类分别是LifecycleOwner(被观察者) 和LifecycleObserver(观察者),新版本SDK中 SupportActivity默认实现了LifecycleOwner接口中的getLifecycle(LifecycleObserver)方法 详细看代码。所以只需要实现观察者LifecycleObserver那部分代码即可。

 

3.使用方法:

组件中方法上使用@OnLifecycleEvent(Lifecycle.Event.ON_XXX)  并实现 implements LifecycleObserver

页面中绑定:getLifecycle().addObserver(组件类实例)

4.使用LifecycleService解耦service和组件

添加依赖:implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

Lifecycle.Event.ON_CREAT  //service onCreate()时调用

Lifecycle.Event.ON_DESTROY  //service onDestory()时调用

使用方法与上面相似

1)service 继承 LifecycleService

2)将观察者与被观察者绑定:getLifecycle().addObserver()

5.processLifecycleOwner 应用当前处于前台或后台使用 ,application中使用

添加依赖:implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

application: ProcessLifecycleOwner.get().getLifecycle().addObserver(new ApplicationObserver());

ApplicationObserver:

Lifecycle.Event.ON_CREAT  //应用程序的整个生命周期中只会被调用一次

Lifecycle.Event.ON_START//应用程序在前台出现时被调用

Lifecycle.Event.ON_RESUME//应用程序在前台出现时被调用

Lifecycle.Event.ON_PAUSE//应用程序退出后台时被调用

Lifecycle.Event.ON_STOP//应用程序退出后台时被调用

Lifecycle.Event.ON_DESTROY  // 永远不会调用,系统不会分发调用

后台到前台 ON_START--->ON_RESUME

前台到后台(home 或 任务菜单)ON_PAUSE--->ON_STOP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值