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

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

中申请 HTTP 服务器数据 , 请求发送后 , 不知道什么时候才能获得响应 , 如果 过一段时间服务器才反馈响应数据 , 此时只能 通过 LiveData 将 ViewModel 的数据修改通知给...视图 View ; 二、LiveData 使用方法 ---- 首先 , 在 ViewModel 视图模型 中定义 LiveData 数据 , 如 MutableLiveData , class MyViewModel...简单示例 ---- 设置一个定时器 , 定时更新数据 , 在 ViewModel 中数据发生了改变 , 需要 主动通知 视图 View 进行修改 ; 使用 传统的开发方式 , 可以使用 线程通信 ,...Handler 或者 广播 等形式 , 在子线程中通知主线程更新 UI ; 使用 LiveData 后 , 将数据定义在 LiveData 中 , 然后在 Activity 中 为 LiveData 添加...+ LiveData 代码 自定义 ViewModel 子类继承 ViewModel , 在 ViewModel 中 , 定义 LiveData 类型的数据 , 此处选择使用 MutableLiveData

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

Android-ViewModel和LiveData使用详解

这种感知确保LiveData更新处于生命周期状态内的应用程序组件。 LiveData是由observer类表示的观察者视为处于活动状态,如果其生命周期处于STARTED或RESUMED状态。...LiveData会将观察者视为活动状态,并通知其数据的变化。LiveData未注册的观察对象以及非活动观察者是不会收到有关更新的通知。...LiveData的优点: 确保UI界面的数据状态 LiveData遵循观察者模式。LiveData在生命周期状态更改时通知Observer对象,更新这些Observer对象中的UI。...* ViewModel 与 LiveData相互配合使用 */ public class DomeModel extends ViewModel { //创建LiveData(可以创建多个不同类型的...private MutableLiveData<DomeInfo mDomeLiveData; /** * 改变 LiveData 中的数据 * 使用 setValue() * @param

3.4K30

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

一般情况下LiveData都是搭配这ViewModel使用,这里先介绍一下LiveData,再结合ViewModel使用 Android数据绑定技术一,企业级开发 Android数据绑定技术二,企业级开发...的使用 5、MutableLiveData的使用 6、LiveData和MutableLiveData的可变与不可变 7、其他方法 1、什么是LiveData LiveData是一个观察者模式的数据实体类...LiveData它能感知绑定者的生命周期(如Activity,Fragment),不会发生内存泄露,因为它只会给活跃状态的activity回调,我们在使用的时候通常都会在回调里去更新UI。...下面代码讲解 抽象类,无法直接new 2、什么是MutableLiveData MutableLiveData的父类是LiveData 用法和LiveData类似,也是在注册观察者回调里查看更新数据 可变...,setValue和postValue支持外部使用(public修饰) 普通类,可以直接new 3、LiveData与MutableLiveData区别 LiveData在实体类里可以通知指定某个字段的数据更新

1.5K20

两步使用 LiveData 替换 Observable Field

默认情况下,普通函数和字符串是不可观察的,这就意味着,当您在数据绑定布局中需要使用它们时,只能在新建的时候获取它们的值,但在后续的操作中,却不能得到相应的数据。...因此对于 LiveData 来说,它的优势在于不仅支持 Transformations,而且可以与许多架构组件 (如 Room、 WorkManager) 相互配合使用。...综上,我们推荐您使用 LiveData。方法也非常简单,只需要两个步骤。...第一步: 用 LiveData 替换 Observable Fields 如果您是直接在数据绑定中使用 Observable Fields,只需将 Live ObservableSomething (或...setLifecycleOwner 方法,想要从数据绑定布局观察 LiveData ,必须使用该方法。

11210

LiveData 的正确使用姿势以及反模式

借助 LiveData 的能力,在 View(Activity 或者 Fragment)和 ViewModel 之间,使用 LiveData 通信,当 LiveData 发生变化的时候,订阅了该 LiveData...的 View 能够收到通知以便做出相应的更新 UI 逻辑。...因此,并不是所有场景下都适合使用 LiveData,当我们所要监听的数据是符合「状态」特性,而是不是「事件」特性的时候,才是最适合使用 LiveData 的场景。...LiveData 常见的几种错误使用姿势 前文之所以花费这么大篇幅介绍 LiveData 的「粘性消息」特性,一是为了让大家对 LiveData 有更深一步的认识,了解其设计之初的目的才知道什么时候该用...LiveData 的,虽然使用各种 workaround 的方式(此处可参考我的另一篇文章:LiveData 非粘性消息的探索和尝试 )可能可以满足需求,但是 LiveData 有自己特定的使用场景,

82720

Jetpack源码解析—LiveData使用及工作原理

此感知确保LiveData更新处于活动生命周期状态的应用程序组件观察者。 2.2 优点 1. 确保UI符合数据状态 LiveData遵循观察者模式。...7.共享资源 您可以使用单例模式扩展LiveData对象并包装成系统服务,以便在应用程序中进行共享。...LiveData对象一旦连接到系统服务,任何需要该资源的Observer都只需观察这个LiveData对象。...接下来我们看下怎样更新livedata中数据值: 3.3 dispatchingValue() 我们追踪activeStateChanged方法发现,在里面做了一些活跃状态值的操作,并且当状态活跃时,更新数据值...而关于postValue()在子线程更新数据的相关代码,这里就不做介绍了,其实你大可以想出来,就是使用的Handler。

99520

在 SnackBar,Navigation 和其他事件中使用 LiveData(SingleLiveEvent 案例)

视图层(Activity 或者 Fragment)与 ViewModel 层进行通讯的一种便捷的方式就是使用 LiveData 来进行观察。...使用 LiveData 来解决事件 这种方法来直接的在 LiveData 对象的内部持有 Snackbar 消息或者导航信息。...使用 LiveData 进行事件处理,在观察者中重置事件的初始值 通过这种方法,您可以添加一种方法来从视图中支出您已经处理了该事件,并且重置该事件。...✔️ 正确解决方法: 使用 SingleLiveEvent 这个 SingleLiveEvent 类是为了适用于特定场景的解决方法。这是一个只会发送一次更新LiveData。...使用事件包装器,您可以将多个观察者添加到一次性事件中。 ---- 总之:把事件设计成你的状态的一部分。使用您自己的事件包装器并根据您的需求进行定制。 银弹!

2.7K41

Electron打包以及使用CloudKit做自动更新服务

toc Electron打包 Electron自动更新 Mac 版本签名 自动更新服务端 Electron打包 Electron代码编写之后便是打包, 官网 介绍了几种方法,用了 electron-packager...自动更新需要服务端支持,核心就是请求服务端判断是否有新版本 GET /mac/lastes?...,特别一点是ownerId的意义在于:CloudKit publicdatabase 大家都可以上传文件,默认只有自己可以修改自己创建的记录,所以使用ownerId只获取自己上传的记录,这样反而可以将这做成一个不错的对外服务...这样自己服务端无需数据库,App zip文件也无需使用其他CDN存储,简单高效低成本 Cloudkit网上教程相对较少,因此 最好前后端都使用官方提供的CloudKit.js,这样会少走很多弯路,至于server...---- 文章多次修订后,决定开放http://hipo.cash/cloudkit/为一个免费Electron自动更新服务,上述API,所需的几个参数都可以在表格中列出,方便获取。

98220

nodejs使用cmd更新windows服务器上的代码

记一下使用nodejs更新windows server上的代码 项目依赖 主文件代码 工具使用 注意事项 有个项目是部署在阿里云Windows Server服务器上的,每次更新都需要远程或者ssh上去更新...,比较繁琐就搞了一个nodejs工具去更新代码了 # 项目依赖 项目基于koa开发,需要安装koa-router、node-cmd package.json文件 { "name": "code_upd...nodeCmd = require('node-cmd'); router.get('/', async (ctx, next) => { await next(); ctx.body = '更新代码...cmdTxt); }); } app.use(router.routes()); app.use(router.allowedMethods()); app.listen(7000); # 工具使用...可以用pm2启动server.js,然后就可以通过请求ip:7000/upd来更新代码了 # 注意事项 可能需要在阿里云后台的安全组放行项目使用的端口,不然无法请求到服务地址

3.3K10

Android Jetpack - LiveData

等),此感知能力确保了 LiveData更新处于生命周期活跃状态的组件的观察者 生命周期活跃状态的定义是这些组件正处于 STARTED 或 RESUMED 状态,LiveData 只会更新活跃状态的观察者...例如,后台活动在返回前台后立即接收最新数据 配置更改友好 如果由于配置更改(例如设备轮换)而重新创建活动或片段,则会立即接收最新的可用数据 资源共享 你可以使用单例模式扩展 LiveData 对象以包装系统服务...LiveData 对象连接到系统服务一次,然后任何需要该资源的观察者都可以只观看 LiveData 对象 使用 LiveData 使用 LiveData 的常规步骤如下,我们按照下面这些步骤写一个简单的例子...,这一步通常在 UI 控制器中完成 3、使用 observer() 方法关联 Observer 和 LiveData ,observer() 方法持有 LifecycleOwner 对象,此订阅会让 LiveData...与 Room 一起使用 LiveData Room 持久化库支持可观察查询并返回 LiveData 对象,这些查询一般在 DAO 中编写 在更新数据库时,Room 会生成更新 LiveData 对象所需的所有代码

2K30

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

三个步骤就定义了使用LiveData的方式,从步骤可以看出,使用了观察者模式,当LiveData对象持有数据发生变化,会通知对它订阅的所有处于活跃状态的订阅者。...当然,如果此时LiveData没有存储值的话,onChange()方法不会被调用。 更新 LiveData 对象 LiveData本身没有提供公共方法更新值。...与Observer建立关系后,通过修改LiveData的值从而更新Observer中的视图。...onInactive() 当没有活跃状态的订阅者订阅LiveData时会回调该方法。此时没有必要保持StockManage服务象的连接。...例如我们在实际开发中,我们的数据源要么来自服务器,要么来自本地数据库。这里就考虑使用MediatorLiveData。

2.9K30

Android从零开始搭建MVVM架构(4)——LiveData

7.共享资源 您可以使用单例模式扩展LiveData对象并包装成系统服务,以便在应用程序中进行共享。...LiveData对象一旦连接到系统服务,任何需要该资源的Observer都只需观察这个LiveData对象。 如何使用LiveData? 1.创建一个LiveData的实例来保存特定类型的数据。...注意:必须要从主线程调用setValue(T) 方法来更新LiveData 对象. 如果代码在工作线程中执行, 你可以使用postValue(T) 方法来更新LiveData对象....由于没有Observer在监听,所以没有理由继续保持与StockManager服务的连接。 setValue(T)方法更新LiveData实例的值,并通知活动观察者有关更改。...LiveData只在他们至少一个处于可见和活跃状态时才连接到系统服务

2.2K30

服务出错排错方法(持续更新)

硬盘 如果服务突然出现了应用卡顿,首先应该排查应用使用的磁盘空间是否已经所剩无几。...原因有: 应用都会写本地日志,如果磁盘满的情况,可能会因为所用的日志库不够健壮,导致很多失败,从而影响应用的稳定 mysql磁盘满了,数据写不进去了,更新操作被挂起,导致服务报错 redis配置了持久化...,当无写入空间时,redis就无法对外提供写服务了 inode如果超过配额,会导致一种特殊情况,磁盘没有满但无法写入 解决方案: df -h查看磁盘使用 df -i查看inode使用情况 关注系统中的大文件...logging: driver: “json-file” options: max-size: “3m” 为你的应用选择合适的硬盘,如果你使用了云服务器,一般挂盘会让你选择普通型还是高性能型...如果你的请求中80%+都是读,那么可以使用普通盘,大于20%的业务请求都是在写入,请使用高性能。 内存 说到内存,老高第一个想到的就是OOM了。。。但是想把OOM讲清楚不是本文的目的。

76740

【Jetpack】ViewModel + LiveData + DataBinding 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

, 在 DataBinding 布局中设置的就是该 视图模型 类对象 ; 该 ViewModel 类中 , 还 使用LiveData , 可以实时监听数据改变 , 以更新界面 UI 组件 ; import...androidx.lifecycle.Observer#onChanged 函数 , 在该回调函数中执行 更新视图 操作 ; LiveData 使用核心要点 : 首先 , 在 自定义 ViewModel...的观察者 , 如果不设置该项 , LiveData 发生数据改变后 , 则 不会通知 UI 组件进行数据更新 ; Activity 组件继承了 AppCompatActivity , AppCompatActivity..., 在最后为 LiveData 设置观察者 , 实现了 DataBinding + ViewModel + LiveData 组合使用 ; // 1....实现 , 用于在 运行过程中 , 一旦 ViewModel 数据发生改变 , 就 通知 View 视图组件 , 更新数据显示 ; LiveData 生效需要 为 MutableLiveData 设置

1.3K20

【Jetpack】Room + ViewModel + LiveData 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

一、Room + ViewModel + LiveData 框架使用核心要点 1、Room 框架优化分析 在上一篇博客 【Jetpack】使用 Room 框架访问 Android 平台 SQLite 数据库...与 数据模型 Model 之间 数据交互的 桥梁 ; LiveData 是基于 ViewModel 的 , 是 对 ViewModel 数据维护的一个补充 ; 在 ViewModel 中使用LiveData...监听数据变化 , 如果数据发生变化则在 LiveData 设置的 androidx.lifecycle.Observer 监听器回调中 更新 View 视图 ; View 视图层 : Activity...框架使用来说 , Room 与 LiveData 结合使用 , Room 单独使用 , 唯一的区别是 Room 框架中的 Dao 数据访问接口对象 中的 查询方法 , 其返回值类型改为 LiveData...返回值外的正常查询方法 Room 框架 与 LiveData 结合使用之后 , 在 Room 框架中的 Dao 数据库访问接口中 定义了 LiveData 返回值类型的查询方法 ; /**

61920
领券