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

Android  JetPack~ LiveData (一)   介绍与使用

一般情况下LiveData都是搭配这ViewModel使用,这里先介绍一下LiveData,再结合ViewModel使用 Android数据绑定技术一,企业级开发 Android数据绑定技术二,企业级开发...Android  JetPack~ DataBinding(数据绑定)(一)    集成与使用 Android  JetPack~ LiveData (一)   介绍与使用 Android  JetPack...super T> observer) 移除指定的观察者 removeObservers(@NonNull final LifecycleOwner owner)   移除当前Activity...或者Fragment的全部观察者 hasActiveObservers()   如果此LiveData具有活动(Activity或者Fragment在前台,当前屏幕显示)的观察者,则返回true。...super T> observer)   设置此LiveData数据当前activity或者Fragment观察者,会给此activity或者Fragment在前台时回调数据。

1.5K20

Jetpack之LiveData详解

简介 LiveData 是Jetpack中的一个组件,是一个可被观察的数据存储器类, 具有感知组件生命周期的能力,LiveData 可以感知组件生命周期活跃状态发送数据更新,在组件销毁时移除观察者对象,...在给 LiveData 添加观察者对象的时候可以绑定一个具有生命周期的组件,当组件生命周期处于活跃状态(即 STARTED 、RESUMED 状态)时数据更新才会通知观察者,当组件被销毁时则会自动移除对应的观察者对象...super T> observer):移除对应的观察者对象 public void removeObservers(final LifecycleOwner owner) :根据生命周期对象移除观察者对象...将观察者移除,防止内存泄漏。...LiveData 结合 ViewModel 使用 前面介绍 LiveData 的使用时都是直接在Activity里使用的,但是真实开发场景中我们一般不直接在 Activity / Fragment 中使用而是在

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

Android-ViewModel和LiveData使用详解

LiveData是一个可观察的数据持有者类。与常见的观察者不同,LiveData是有生命周期感知的。这意味着它尊重其他应用程序组件的生命周期,比如Activity、Fragment或Service。...这种感知确保LiveData只更新处于生命周期状态内的应用程序组件。 LiveData是由observer类表示的观察者视为处于活动状态,如果其生命周期处于STARTED或RESUMED状态。...LiveData会将观察者视为活动状态,并通知其数据的变化。LiveData未注册的观察对象以及非活动观察者是不会收到有关更新的通知。...LiveData的优点: 确保UI界面的数据状态 LiveData遵循观察者模式。LiveData在生命周期状态更改时通知Observer对象,更新这些Observer对象中的UI。...观察者可以在每次应用程序数据更改时更新UI,而不是每次发生更改时更新UI。 没有内存泄漏 当观察者被绑定他们对应的LifeCycle以后,当页面销毁时他们会自动被移除,不会导致内存溢出。

3.4K30

Android程序员该如何去手写事件通信方案LiveDataBus

它具有以下特点: 数据可以被观察者订阅; 能够感知组件(Fragment、Activity、Service)的生命周期; 只有在组件出于激活状态(STARTED、RESUMED)才会通知观察者有数据更新...LiveData具有以下优点: 1.能够保证数据和UI统一 这个和LiveData采用了观察者模式有关,LiveData是被观察者,当数据有变化时会通知观察者(UI)。...四、LiveData主要涉及到的时序有三个: 在Fragment/Activity中通过LiveData.observer()添加观察者(observer()方法中的第二个参数)。...根据Fragment/Activity生命周期发生变化时,移除观察者或者通知观察者更新数据。 当调用LiveData的setValue()、postValue()方法后,通知观察者更新数据。...LiveData的onInactive处理涉及onActive剩下的生命周期,可以简单理解onInactive是Android的Activity/Fragment处于未激活(后台,比如当前Activity

1.4K10

LiveData精通指南:解锁其潜力

Android开发中,LiveData是一个非常有用的工具。它可以帮助我们在应用程序中实现响应式编程,并且还具有生命周期感知能力,可以帮助我们避免内存泄漏。...LiveDataAndroid Jetpack组件之一,它具有生命周期感知能力,可以确保观察者只会在活动的生命周期内接收数据更新。...与生命周期组件的配合使用 LiveData通过与Lifecycle组件配合使用,实现了对观察者的自动添加和移除。...当Activity或Fragment处于STARTED或RESUMED状态时,LiveData会将观察者添加到观察者列表中,并开始向观察者发送数据更新通知。...当Activity或Fragment处于STOPPED或DESTROYED状态时,LiveData会自动将观察者观察者列表中移除,停止向其发送数据更新通知。

18710

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

用 Architecture Components 构建的 APP 中实体的典型交互 理想情况下,ViewModel 不应该知道任何关于 Android 的事情(如Activity、Fragment)...观察者模式 ? 一个很方便的设计 Android 应用中的展示层的方法是让视图层(Activity 或 Fragment)去观察 ViewModel 的变化。...LiveData 是这个架构的关键组件,因此通常你的 Activity 和 Fragment 会观察 LiveData 实例。...当 ViewModel 被移除或者视图的生命周期结束,订阅被清除: ? 如果尝试这种方法,有个问题:如果无法访问 LifecycleOwner ,如何从 ViewModel 中订阅数据仓库呢?...继承 LiveData LiveData 最常见的用例是在 ViewModel 中使用 MutableLiveData 并且将它们暴露为 LiveData 来保证观察者不会改变他们。

3K30

Android LiveData 使用详解

如果用传统的方式来实现,那么我们一般才采取观察者的方式来实现,这样,当我们需要观察数据的时候,我们需要添加 observer,在界面销毁的时候,我们需要移除 observer。...也不需要手动移除 observer,不会发生内存泄漏,方便快捷。...LiveData 内部已经实现了观察者模式,如果你的数据要同时通知几个界面,可以采取这种方式 我们知道 LiveData 数据变化的时候,会回调 Observer 的 onChange 方法,但是回调的前提是...但是,对于你想做一些类似与在后台工作的(黑科技), liveData 就不太适合了,你可以使用 observeForever 方法,或者自己实现观察者模式去吧。...Android lifecyle 源码解剖 Android livedata 源码解剖 github sample 地址: ArchiteComponentsSample

4.8K40

LiveData 还有学习的必要吗?—— Jetpack 系列(2)

:新一代视图绑定方案[5] 7、Fragment:模块化的微型 Activity[6] 8、RecyclerView:可复用型列表视图 9、Navigation:单 Activity 多 Fragment...LiveData 是基于 Lifecycle 框架实现的生命周期感知型数据容器,能够让数据观察者更加安全地应对宿主(Activity / Fragment 等)生命周期变化,核心概括为 2 点: 1、自动取消订阅...: 当宿主生命周期进入消亡(DESTROYED)状态时,LiveData 会自动移除观察者,避免内存泄漏; 2、安全地回调数据: 在宿主生命周期状态低于活跃状态(STAETED)时,LiveData 不会回调数据...; LiveData#observeForever(Observer) 永久注册: LiveData 会一直持有观察者的引用,只要数据更新就会回调,因此这种方式必须在合适的时机手动移除观察者。...,因此在移除观察者之前都是活跃状态。

3.5K10

LiveData的前世今生

LiveData with SnackBar, Navigation and other events (the SingleLiveEvent case) View(Activity或Fragment...确保你的用户界面与你的数据状态相匹配:LiveData遵循观察者模式,当生命周期状态改变时,LiveData会通知观察者对象。你可以整合你的代码来更新这些观察者对象中的UI。...LiveData对象与系统服务连接一次,然后任何需要该资源的观察者就可以观察LiveData对象。欲了解更多信息,请参见扩展LiveData。...所以没有任何东西会被从集合中移除。 The recommended solution 你可以在LiveData类本身中找到处理多个观察者的标准方法,那就是将原始观察者包裹起来。...其次,每个观察者都会以自己的所有者身份注册到父级LiveData

1.1K10

带你了解LiveData重放污染的前世今生

LiveData with SnackBar, Navigation and other events (the SingleLiveEvent case) View(Activity或Fragment...确保你的用户界面与你的数据状态相匹配:LiveData遵循观察者模式,当生命周期状态改变时,LiveData会通知观察者对象。你可以整合你的代码来更新这些观察者对象中的UI。...LiveData对象与系统服务连接一次,然后任何需要该资源的观察者就可以观察LiveData对象。欲了解更多信息,请参见扩展LiveData。...所以没有任何东西会被从集合中移除。 The recommended solution 你可以在LiveData类本身中找到处理多个观察者的标准方法,那就是将原始观察者包裹起来。...其次,每个观察者都会以自己的所有者身份注册到父级LiveData

1.2K10

Android Jetpack架构组件(四)之LiveData

与常规的可观察类不同,LiveData 具有生命周期感知能力,这意味着它具有感知应用组件(如 Activity、Fragment 或 Service)的生命周期的能力,并且LiveData仅更新处于活跃生命周期状态的应用组件观察者...LiveData是一个持有数据的容器类,它持有的数据是可以被观察者订阅的,当数据发生变化时会通知观察者观察者可以是 Activity、Fragment、Service 等对象。...因此,我们认为LiveData就是一个数据容器,它负责将数据包裹起来,使数据成为被观察者,当数据发生变化时,LiveData会通知观察者以便观察者做出响应。...从上述步骤可以看出,LiveData使用了观察者模式,观察者通常是UI控制器,如Activity或Fragment,而被观察者则是LiveData包谷的数据对象, 当LiveData对象持有数据发生变化...同时,LiveData仅更新处于活跃生命周期状态的应用组件观察者,也即是说LiveData并不会通知所有的观察者,它只会通知处于活跃状态的观察者,那么它是如何做到这一点的呢?

2.7K00

是时候更新手里的武器了—Jetpack架构组件简析

这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。 ” LiveData 是一种可观察的数据存储器类。等等,这个介绍好像似曾相识?...不会因 Activity 停止而导致崩溃如果观察者的生命周期处于非活跃状态(如返回栈中的 Activity),则它不会接收任何 LiveData 事件。...自动判断生命周期并回调方法如果观察者的生命周期处于 STARTED 或 RESUMED状态,则 LiveData 会认为该观察者处于活跃状态,就会调用onActive方法,否则,如果 LiveData...当Fragment这个观察者生命周期发生变化时,LiveData就会移除这个观察者,不再发送消息,所以也就避免崩溃问题。.../myFragment3" /> <fragment android:id="@+id/myFragment3" android

2.9K20

Android Jetpack - LiveData

LiveData 概述 LiveData 是一个可观察数据包装类,与普通观察者不同,LiveData 具备生命周期感知能力,这意味着它遵循其它应用组件的生命周期(Activity、Fragment、Service...DESTROYED 状态时自动移除,尤其是 activities 和 fragments ,它们可以安全地观察 LiveData 而不必担心内存泄露 —— activities 和 fragments...具体可以参考 Android Jetpack - Room 一文所提供的代码示例 转换 LiveData 您可能希望在将 LiveData 对象分派给观察者之前更改存储在 LiveData 对象中的值,...) } 完整代码示例 https://github.com/realskyrin/jetpack_livedata 参考 https://developer.android.com/topic/libraries.../architecture/livedata https://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin

1.9K30
领券