Jetpack篇——Lifecycle

一、简介

Lifecycle 组件是一种感知生命周期的组件。众所周知,在 Android 中有生命周期的概念,我们接触最多的就属 ActivityFragment,那么 Lifecycle 的功能就是使得一个类能够感知 Activity 或者 Fragment 的生命周期,进而作出相应的事件处理。

Glide 也有类似的 骚操作,只不过它不是使用了 Lifecycle而是创建了一个无UI的 Fragment,将其与 Activity 绑定,这样就使得 Activity 影响 Fragment 的 生命周期,然后利用 Fragment 的生命周期管理自己的 Glide 单例的生命周期

那么如果我们利用 Lifecycle 组件的话,就可以很轻易的实现能够感知生命周期的功能。

二、使用

1、导入依赖

如果你的项目是 androidx 的话,那就不需要引入依赖了,如果你的项目还是老旧的android.support 或者你不想用默认的版本,你也可以去 Maven 中搜索比较新的版本。

2、实现

创建一个类,并且将其继承 LifecycleObserver 接口:

class Presenter: LifecycleObserver {

}

事实上 LifecycleObserver 是一个 空接口,那就意味着它是用来作为标记使用的,再看看它的名字,很容易让人联想到,这就是一个 观察者模式。其实到这里故事就已经结束……
diao
我们基本上可以猜测出,Activity 或者 Fragment 肯定是实现了被观察者的功能,然后通过某个订阅方法就可以将其与继承了LifecycleObserver的类绑定起来,然后管理生命周期。不过猜归猜,学习是个很严谨的过程,我们继续……
bieda
然后在 Activity 或者 Fragment 中调用方法,将其与之绑定:

/**
 * 以下是 Avtivity 中的代码,如果是 Fragment 关键代码也是相同的。
 */
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    val presenter = Presenter()
    lifecycle.addObserver(presenter)	//Java中:getLifecycle().addObserver(presenter)
}

到这就实现完了……

3、使用

收住你40米的大刀,我们继续看看如何使用……

我们通过使用 @OnLifecycleEvent 的注解,来实现感应 Activity 的生命周期,例如下面的例子:

class Presenter: LifecycleObserver {

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun onCreate(){
        Log.e("==>Presenter","onCreate()")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun onCreate2(){
        Log.e("==>Presenter","onCreate2()")
    }

    fun onCreate3(){
        Log.e("==>Presenter","onCreate3()")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    fun onDestroy(){
        Log.e("==>Presenter","onDestroy()")
    }
}

当我们打开该 Activity 控制台会输出:
==>Presenter: onCreate2()
==>Presenter: onCreate()

再退出 Activity,控制台会输出:
==>Presenter: onDestroy()

所以我们得到了一个结论:被 @OnLifecycleEvent 注解标记的方法,并且填入对应生命周期的参数,就会监听到被订阅的Activity 或者 Fragment 的生命周期,并且执行对应生命周期的方法。

三、Lifecycle相关操作

这里挖个坑,以后会慢慢填……

四、小结

Lifecycle 组件主要是简化了对于生命周期监听的操作,即使不使用该组件,我们也能够很轻易的实现出一套逻辑。但是,存在即合理,Lifecycle 的出现的确是减少了不必要的代码,这些代码主要是分布在各个生命周期相关的方法中,例如 onResumeonStop等等,使用Lifecycle 就能够减少对Activity 或者 Fragment 浸入式的代码,减少耦合!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值