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的用处和原理,它可以有效的预防内存泄漏问题。本文来分析另外一个组件LiveDataLiveData组件跟ViewModel结合,可以说是以一大利器。本文以2.2.0版本为例配合Android ViewModel组件详解一文中的计数器demo为例进行说明。

另外本文中会用到

以上是关于LiveData详解的主要内容,如果未能解决你的问题,请参考以下文章

LiveData详解

Android ViewModel+LiveData实现Fragment间通信详解

Jetpakc LiveData ViewMode详解

Android ViewModel与LiveData组件组合使用详解

Android ViewModel与LiveData组件组合使用详解

Android LiveData组件分析