首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

谷歌官方Android应用架构库——LiveData

架构库版本:1.0.0 Alpha 2 – June 2, 2017 LiveData 是一数据持有者类,它持有一值并允许观察该值。...LiveData 是生命周期感知的事实给我们提供了一新的可能:可以在多个 activity,fragment 等之间共享它。...LiveData 的转换 有时候可能会需要在将 LiveData 发送到观察者之前改变它的值,或者需要更具另一 LiveData 返回一不同的 LiveData 实例。...;LiveData user = Transformations.switchMap(userId, id -> getUser(id) ); 使用这些转换允许在整个调用链中携带观察者的 Lifecycle...MediatorLiveData 需要特别注意正确的向 LiveData 传递其处于活动/闲置状态。有关详细信息,请参阅 Transformations 类。

1.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

Jetpack:在数据变化时如何优雅更新Views数据

LiveData解耦,不和特定的Activity或Fragment绑定在一起。 创建 观察LiveData 的对象 有了数据之后,总需要有观察者来观察数据,不然数据就失去了存在的意义。...那么在哪里观察数据呢? 在大多数情况下,在应用组件的onCreate()方法中访问LiveData合适的时机。...由于LiveData可以在多个Activity、Fragment和Service中使用,所以可以创建单例模式。...合并多个LiveData MediatorLiveData是LiveData的子类,它主要用途是用来合并多个LiveData。...当其中一数据发生变化是,都会回调订阅MediatorLiveData的观察者的onChanged()方法。例如我们在实际开发中,我们的数据要么来自服务器,要么来自本地数据库。

2.9K30

一篇掌握LiveData transformations

switchMap的转换可能有点棘手,所以让我们从一简单的例子开始。我们想为Player实现一基本的搜索功能。每次搜索文本发生变化时,我们都想更新搜索结果。下面的代码显示了它是如何工作的。...我在调解器创建时调用了更新函数,只有在两都是非空的情况下才会发出一值。这种模式非常通用,但让我们一地走完每一步。 方案1 在从这个LiveData发出任何东西之前,你想监控哪些的变化。...这可以只是一单一的(或更多),但没有固定的上限。...(即让你对单个LiveData进行条件映射或合并多个LiveDatas) 方案2 如果你想在创建MediatorLiveData时设置一初始值,在这里调用内部更新函数。...原文链接:https://proandroiddev.com/livedata-transformations-4f120ac046fc

1.4K20

Jetpack之LiveData详解

数据,或者调度多个 LiveData 数据决定向观察者发送那个 LiveData 的数据更新。...它新增了两方法 addSource 、removeSource 用于添加和删除 LiveData Observer: 观察者接口,通过该接口对 LiveData 数据进行观察 2、详细使用 MutableLiveData...他们的作用都是将一 LiveData 转换为另一 LiveData 对象,当一 LiveData 里的值发生改变时另一 LiveData的值也随之发生改变。...MediatorLiveData 继承自 MutableLiveData 可以添加多个 LiveData 数据,可以观察或调度多个 LiveData 数据。...LiveData userLiveData1 和 userLiveData2 ,当其中任意一数据更新且在 userMediatorLiveData 的活跃生命周期内就会更新 userMediatorLiveData

1.6K20

Paging在RecyclerView中的应用,有这一篇就够了

第一步就这么简单,接下来看第二步 2.2 LiveData 现在我们在ViewMode中调用上面的getAll方法获取所有的文章信息,并且将返回的数据封装成一LiveData,具体如下: class...一基于Paging的Database列表已经完成,是不是非常简单呢?...如果需要完整代码可以查看下面的Github链接 https://github.com/idisfkj/android-api-analysis 3 自定义DataSource 上面是通过Room来获取数据...至于这两方法的具体实现,其实没什么多说的,根据你的业务要求来即可,这里要说的是,数据获取完毕之后要回调方法第二参数callback的onResult方法。...4 项目地址 Android精华录 该库的目的是结合详细的Demo来全面解析Android相关的知识点, 帮助读者能够更快的掌握与理解所阐述的要点 链接地址(或者点击阅读原文): https://github.com

94250

ViewModel 和 LiveData:为设计模式打 Call 还是唱反调?

原文地址:ViewModels and LiveData: Patterns + AntiPatterns 原文作者:Jose Alcérreca 译文出自:掘金翻译计划 本文永久链接:github.com...使用数据仓库(Data Repository) 就像 Guide to App Architecture(应用架构指南) 里说的那样,大多数 APP 有多个数据,比如: 远程:网络、云端 本地:数据库...由于保持缓存和数据库与网络同步的算法通常很琐碎复杂,所以建议为每个仓库创建一类作为处理同步的单一入口。 如果是许多种并且差别很大的数据模型,考虑使用多个数据仓库。...Transformations.switchMap 允许你创建响应其他 LiveData 实例的改变的 LiveData ,它还允许在调用链上传递观察者的生命周期信息: LiveData repo...= Transformations.switchMap(repoIdLiveData, repoId -> { if (repoId.isEmpty()) {

3K30

Android Jetpack - LiveData

LiveData 概述 LiveData 是一可观察数据包装类,与普通观察者不同,LiveData 具备生命周期感知能力,这意味着它遵循其它应用组件的生命周期(Activity、Fragment、Service...LiveData 对象连接到系统服务一次,然后任何需要该资源的观察者都可以只观看 LiveData 对象 使用 LiveData 使用 LiveData 的常规步骤如下,我们按照下面这些步骤写一简单的例子...你可以通过 removeObserver(Observer) 方法删除观察者 1、创建一 LiveData LiveData 是一包装器,可以包装任何数据,包括实现集合的对象,例如 List。...或者您可能需要根据另一 LiveData对象的值返回不同的 LiveData 实例。.... } val userId: LiveData = ... val user = Transformations.switchMap(userId) { id -> getUser(id

2K30

6. Jetpack---Paging你知道怎样上拉加载吗?

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。...分页库支持加载有限以及无限的list,比如一持续更新的信息,分页库可以与RecycleView无缝集合,它还可以与LiveData或RxJava集成,观察界面中的数据变化。 ?...DataSource DataSource 顾名思义就是数据,它是一抽象类,其中Key对应加载数据的条件信息,Value对应加载数据的实体类。...val retry: () -> Unit) Listing是我们封装的一数据类,将数据、网络状态、刷新状态、下拉刷新操作以及重试操作都封装进去了。...-> finish() } return super.onOptionsItemSelected(item) } } ViewModel中的gankList是一LiveData

1.8K40

LiveData奇思妙用总结

二、LiveData实现全局定时器 场景 一全局计数器,Activity销毁时,计时器停止,不会导致内存泄露,Activity激活时,计时器开始,自动获取最新的计时。...sInstance.isInitialized) sInstance else TimerGlobalLiveData() return sInstance } } } 三、共享数据 场景 多个...场景 Activity中有一EndTripView自定义View,这个自定义View中有很多的小view,最右下角是一按钮,点击按钮,调用结束行程的网络请求。...user -> "${user.name} ${user.lastName}" } 摘自官方文档:developer.android.com/topic/libra… 此外,还有一种转换方式:Transformations.switchMap...十一、合并多个LiveData数据 场景 如果界面中有可以从本地数据库或网络更新的 LiveData 对象,则可以向 MediatorLiveData 对象添加以下: 与存储在数据库中的数据关联的

55810

使用 Architecture Component 实现 MVVM 的正确姿势

这里使用 LiveData 和 ViewModel 实现了一简单的 MVVM:数据的变化能够自动通知 View 然后做出相应的 UI 改变,并且能在 Activity 生命周期结束前停止监听 二、认识...LiveData val uiModel: LiveData = Transformations.switchMap(UserRepo.userData, Function...:observer 的生命周期是可以传递到新的 LiveData 中的,也就是当 observer 生命周期销毁的时候,两 LiveData 的监听关系都会断开,这在 ViewModel 和 Repo...() 实际上内部都是用了一叫 MediatorLiveData 的封装类,使用这个类可以将多个 LiveData 组合起来,实现监听多个 LiveData 变化的功能 image.png 例如上图我们的... = Transformations.switchMap( UserRepo.userData, Function { user

76420
领券