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

【Jetpack】LiveData 架构组件 ( LiveData 简介 | LiveData 使用方法 | ViewModel + LiveData 示例 )

这里引入 LiveData 架构组件 , 在 ViewModel 中 , 可以 通过 LiveData 将数据修改的信息发送给 视图 View , 通知 UI 界面进行修改 ; 场景举例 : 在 ViewModel...视图 View ; 二、LiveData 使用方法 ---- 首先 , 在 ViewModel 视图模型 中定义 LiveData 数据 , 如 MutableLiveData , class MyViewModel...后 , 将数据定义在 LiveData 中 , 然后在 Activity 中 为 LiveData 添加 Observer 监听器 , 当 LiveData 数据发生改变时 , 会自动回调该监听器的...onChange 方法 ; 1、ViewModel + LiveData 代码 自定义 ViewModel 子类继承 ViewModel , 在 ViewModel 中 , 定义 LiveData 类型的数据...显示到 UI 界面中 , 并为该 LiveData 设置 Observer 监听器 , 监听 LiveData 的数据变化 ; 启动 Timer 定时器 , 修改 ViewModel 中的 LiveData

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

    Android Kotlin小技巧之用Transformations.map方法转换LiveData

    Components 中的 LiveData 转换部分。...这个函数允许你在 LiveData 的数据发生变化时,自动地对数据进行某种转换,并返回一个新的 LiveData。...主要特点 数据转换:可以将一个 LiveData 的数据类型从一种转换为另一种。 响应式更新:当原始 LiveData 中的数据发生变化时,转换后的 LiveData 也会相应地进行更新。...使用示例 假设你有一个 LiveData 对象,它包含了一个整数类型的数据,我们想要将其转换成一个字符串类型的数据,可以使用Transformations.map来实现。...stringLiveData 是通过 Transformations.map 创建的一个新的 LiveData,它将 Int 类型的数据转换为 String 类型,并在数据更新时自动进行转换。

    19610

    Android Jetpack - LiveData

    LiveData 概述 LiveData 是一个可观察数据包装类,与普通观察者不同,LiveData 具备生命周期感知能力,这意味着它遵循其它应用组件的生命周期(Activity、Fragment、Service...LiveData 对象连接到系统服务一次,然后任何需要该资源的观察者都可以只观看 LiveData 对象 使用 LiveData 使用 LiveData 的常规步骤如下,我们按照下面这些步骤写一个简单的例子...具体可以参考 Android Jetpack - Room 一文所提供的代码示例 转换 LiveData 您可能希望在将 LiveData 对象分派给观察者之前更改存储在 LiveData 对象中的值,...或者您可能需要根据另一个 LiveData对象的值返回不同的 LiveData 实例。...Lifecycle 包提供 Transformations 类,其中包括支持这些方案的帮助程序方法 Transformations.map() 比如将点赞数量转换成流行度 class MainViewModel

    2K30

    LiveData beyond the ViewModel

    Patterns One-to-one static transformation — map img 在我们上面的例子中,ViewModel只是将数据从资源库转发到视图,将其转换为UI模型。...为了在我们的示例应用程序中实现转换,我们需要将两个不同的LiveDatas合并成一个。 img 使用MediatorLiveData来组合数据的方法是在不同的方法中添加来源和设置值。...请记住,LiveData会将最新的值分派给新的观察者。另外,Lollipop中引入了Activity转换,它们带来了一个有趣的边缘情况:两个Activity处于活动状态。...不要在var中使用Livedata。在初始化的时候,要将转换的内容写入。...LiveData转换(和Kotlin魔法)的组合可能足以满足你的情况,但如果你(和你的团队)已经投资学习RxJava,你可能不需要LiveData。

    1.5K30

    Android livedata 源码解剖

    Android lifecycle 使用详解 Android LiveData 使用详解 Android lifecyle 源码解剖 Android livedata 源码解剖 github sample...---- 前言 在前面三篇博客中,我们已经介绍了 lifecycle 的使用及原理,livedata ,ViewModel 的常用用法,今天,让我们一起来学习 livedata 的原理。...我们先来回顾一下 LiveData 的特点: LiveData 是一个可以被观察的数据持有类,它可以感知 Activity、Fragment或Service 等组件的生命周期。...所以会回调 obsever 的 onChange 方法,这也就是 LiveData 设计得比较巧妙的一个地方 同理,当 activity 处于后台的时候,您多次调用 livedata 的 setValue...方法,最终只会回调 livedata observer 的 onChange 方法一次。

    98220

    Android | LiveData 源码分析

    在日常开发过程中,LiveData 已经是必不可少的一环了,例如 MVVM 以及 MVI 开发模式中,都用到了 LiveData。...了解 LiveData 如果观察者(Activity/Fragment) 的生命周期处于 STARTED 或者 RESUMED 状态,LiveData 就会认为是活跃状态。...,它会在变为活跃状态时接收最新数据 配置更改后也会接收到最新的可用数据 共享资源,可以使用单例模式扩展 LiveData 对象,以便在应用中共享他们 LiveData 的使用 LiveData 是一种可用于任何数据的封装容器...转换 LiveData Transformations.map() 在数据分发给观察者之前对其中存储的值进行更改,返回一个新的 LiveData,可以使用此方法 private val _state...= null) //根据条件返回对应的 livedata else //根据条件返回对应的 livedata } 合并多个 LiveData var live1 =

    1.1K20

    Android LiveData 使用详解

    这篇博客让我们一起来了解一下 LiveData 是怎样使用的?...---- 为什么要引进 LiveData LiveData 是一个可以被观察的数据持有类,它可以感知 Activity、Fragment或Service 等组件的生命周期。...接下来,让我们一起来看一下 LiveData 的使用 ---- LiveData 使用 基本使用 引入相关的依赖包 // ViewModel and LiveData implementation "...implementation "android.arch.lifecycle:livedata:1.1.0" 在代码中使用 LiveData 是一个抽象类,它的实现子类有 MutableLiveData...LiveData 内部已经实现了观察者模式,如果你的数据要同时通知几个界面,可以采取这种方式 我们知道 LiveData 数据变化的时候,会回调 Observer 的 onChange 方法,但是回调的前提是

    4.9K40

    【译】LiveData三连

    ❝老实说,LiveData是一个可观察的数据持有者。它让你的应用程序中的组件,通常是UI,能够观察LiveData对象的变化。...这就是数据变化用户界面变化周期在LiveData中的工作方式。 LiveData的新特点是它具有生命周期意识。...LiveData的功能非常强大,以至于有些人使用LiveData实现了事件总线机制。...如果你有一个实际的Stream,它可能发生背压的问题,那么LiveData就不能解决你的问题。原因是LiveData并不支持它。LiveData的目的是在观察者处于/进入活动状态时向UI推送最新的值。...LiveData并不能对你的线程管理提供完全的控制权。LiveData基本上有两种选择:同步更新或从工作线程发布异步值。

    1.7K20

    Android-Jetpack笔记-LiveData

    LiveData即有生命的数据,通过观察者模式实现,当数据发生变化时可以收到回调。同时还具备感知宿主生命周期的能力。...Jetpack笔记代码 本文源码基于SDK 29 使用 引入依赖: def lifecycle_version = "2.2.0" //extensions包含Lifecycles、LiveData、...原理 首先看mLiveData.observe, //LiveData.java public void observe(@NonNull LifecycleOwner owner, @NonNull...再看下另一个实现, //LiveData.AlwaysActiveObserver @Override boolean shouldBeActive() { //直接返回true return...优点: 使用简单,可以避免内存泄漏,RxJava则需结合RxLifecycle 能感知生命周期,在页面活跃状态才进行通知,可以避免页面不可见时还在占资源 参考文章 掘金-Android官方架构组件LiveData

    59120
    领券