LiveData详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LiveData详解相关的知识,希望对你有一定的参考价值。
参考技术A LiveData是一个数据持有者类,可以在给定的生命周期中观察到。observe被要求在主线程调用,并且传递生命周期相关的LifecycleOwner,
与observe相似,区别在于
ObserverWrapper是LiveData缓存的观察者对象,它是LifecycleBoundObserver与AlwaysActiveObserver的父类
更新LiveData数据,被要求在主线程调用,调用后数据及数据版本会变化,随后通知观察者
该方法也做了并发兼容,并支持回调指定的ObserverWrapper,用于在ObserverWrapper从非活跃变成活跃状态并且数据版本发生变化时回调自身。
postValue也是更新LiveData数据,只是该方法支持在子线程调用,调用后通过往主线程Handle抛mPostValueRunnable调用setValue实现数据更新
若产生并发则通过替换mPendingData的值来更新数据,而不会重复往主线程抛setValue方法。
LiveData的特性是观察者只关心数据变化的最终值,如果你不太关心数据变化的中间值,只要数据变化了能通知到你最新的值的话LiveData已经够用了,甚至项目中它已经可以取代事件总线的地位。
但如果你需要数据的每一次变化都通知到你的话,就不要用LiveData了。以下场景存在数据丢失的问题
只有observeForever+setValue没有这种问题,条件有些苛刻,不了解原理的话容易踩坑。
Android LiveData组件分析
文章目录
前言
Android ViewModel组件详解博文中以计数器为例说明了ViewModel
的用处和原理,它可以有效的预防内存泄漏问题。本文来分析另外一个组件LiveData
。LiveData
组件跟ViewModel
结合,可以说是以一大利器。本文以2.2.0版本为例配合Android ViewModel组件详解一文中的计数器demo为例进行说明。
另外本文中会用到
以上是关于LiveData详解的主要内容,如果未能解决你的问题,请参考以下文章
Android ViewModel+LiveData实现Fragment间通信详解
Android ViewModel与LiveData组件组合使用详解