LiveData的优势

本文介绍了LiveData在Android应用中的优势,包括生命周期感知、自动绑定与解绑、避免内存泄漏、观察者模式和数据更新的被动性。特别提到LiveData如何配合ViewModel和Room数据库,实现单向数据流和资源共享,提高开发效率。
摘要由CSDN通过智能技术生成

LiveData 具有生命周期感知能力,观察时会传入对应的LifecycleOwner。这种感知能力可确保LiveData 仅更新处于活跃生命周期状态的应用组件观察者

应用组件观察者可以很安全的观察数据变化(绑定声明周期,自动绑定和移除),不用担心内存泄漏等问题。

该组件的优势:

  • 确保界面符合数据状态

  • LiveData 遵循观察者模式。当观察的数据发生变化时,LiveData 会通知 [Observer]对象,实现被动更新,不需要主动去调用viewmodel获取数据。

  • 不会发生内存泄漏

  • 观察者会绑定到 [Lifecycle],可以获取到应用组件的声明周期,当销毁时自动取消订阅。

  • 不会因 Activity 停止而导致崩溃

  • 如果观察者的生命周期处于非活跃状态(如返回栈中的 Activity),则它不会接收任何 LiveData 事件(也是通过LifecycleOwner实现的)

  • 数据始终保持最新状态

  • 如果生命周期变为非活跃状态,它会在再次变为活跃状态时接收最新的数据。如果看源码会发现Observe有一个version版本号,而LiveData也有一个版本号是否调用观察者通知数据变化就是比对这两个版本号是否一致,ViewModel会保存LiveData实例,当重建时LiveData版本号还是之前的版本号,而观察者此时重走OnCreate为0,所以可以收到上一次的数据变化通知

  • 适当的配置更改

  • 如果由于配置更改(如设备旋转)而重新创建了 Activity 或 Fragment,它会立即接收最新的可用数据。(ViewModel通过在OnDestory的时候保存到Configure属性中,当attach的时候取出这个属性里面的Viewodel赋值给组件,当Activity/Fragment重新get获取的时候拿到的就是上次的ViewModel)

  • 共享资源

  • 可以使用单例模式扩展 [LiveData] 对象以封装系统服务,以便在应用中共享它们。LiveData 对象连接到系统服务一次,然后需要相应资源的任何观察者只需观察 LiveData 对象。这个具体场景就是搭配Room数据库返回LiveData的结合,之前需要手动去做逻辑变更,但现在唯一数据源是数据库只需要更改数据库即可,不需要再Activity中处理逻辑改变数据源,符合上一篇文章说到的单项数据流原则。

原文链接:LiveData的优势 - 掘金 (juejin.cn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏铁锤chui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值