LiveData是怎么做数据派发的

本文详细探讨了Android LiveData的observe方法及其工作原理,包括只能在主线程调用、生命周期绑定、防止重复注册和内存泄漏。重点解析了数据分发的核心方法considerNotify,以及如何实现粘性事件,指出在onCreate()中开始观察以避免粘性事件的发生。
摘要由CSDN通过智能技术生成

LiveData的observe

  • 1、observe只能在主线程调用,如果不在主线程注册会抛IllegalStateException异常
  • 2、当前绑定的组件(activity或者fragment)状态为DESTROYED的时候, 则会忽视当前的订阅请求
  • 3、内部会创建生命周期感知的观察者包装类LifecycleBoundObserver(把注册进来的observer包装成 一个具有生命周边边界的观察者)
  • 4、对应观察者只能与一个owner绑定,不允许重复注册
  • 5、最后利用Lifecycle,把观察者注册到LifecycleBoundObserver进去,就能监听到宿主生命周期状态的变化 

LifecycleBoundObserver

一旦一个新的观察者被添加,Lifecycle也会同步它的状态和宿主一致,此时会触发观察者的onStateChanged方法

  • 内部会创建生命周期感知的观察者包装类LifecycleBoundObserver(把注册进来的observer包装成 一个具有生命周边边界的观察者)
    • 它能监听宿主被销毁的事件,从而主动的把自己反注册,避免内存泄漏
    • 此时观察者是否处于活跃状态就等于宿主是否可见, 监听宿主的生命周期,并且宿主不可见时不分发任何数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值