LiveData的回掉时机

通常我们可能会说LiveData的值更新只有在界面可见的时候才会回掉其观察者类,然而这是不严谨的,对于不知道具体回掉时机的人而言,这么描述可能产生误解。
下面我们来具体说一下LiveData的回掉时机:
官方文档这么描述的:

LiveData considers an observer, which is represented by the Observer class, to be in an active state if its lifecycle is in the STARTED or RESUMED state. LiveData only notifies active observers about updates. Inactive observers registered to watch LiveData objects aren’t notified about changes.

也就是说LiveData 的值发生变化的回调时机是页面在STARTED或RESUMED状态,他并不会在意页面是否真的可见,比如你在一个activity界面中加入了一个fragment界面,在这个fragment里面有一个对LiveData的观察者,在这个Activity显示出来后,你又因为某些原因把这个fragment所在的view隐藏了(设置了Visibility为GONE或INVISIBLE),实际上这个时候并没有调用fragment的onStop或onPause方法,也就是说这个fragment在这个时候的状态依然是RESUMED,虽然从我们视觉角度看来这个fragment是不可见的,但LiveData如果发生变化,依然会回调这个Fragment的观察者。

LiveData的生命周期感知能力只是因为它实现了LifecycleObserver接口,并且我们注册观察者的时候传递了lifecycleOwner,所以他可以监听到所传来的lifecycleOwner的生命周期的变化,但可见性的变化并不包含在生命周期的变化,所以即使视觉上不可见依然可能会回调其观察者的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值