LiveData介绍
LiveData是一种可观察监听的数据存储类,当生命周期发生、数据有更新时,observer可感知监听到。
LiveData是最好跟ViewModel配合使用,而MutableLiveData继承LiveData,所以使用时可以直接用MutableLiveData
LiveData只有观察者的生命周期处于活跃状态时才会去通知观察者,比如started,resumed
- 不会发生内存泄漏: observer会在LifecycleOwner状态变为DESTROYED后自动remove;
- 不会因 Activity 停止而导致崩溃:如果LifecycleOwner生命周期处于非活跃状态,则它不会接收任何 LiveData事件;
- 不需要手动解除观察:能自动管理生命周期
- 数据始终保持最新状态:数据更新时 若LifecycleOwner为非活跃状态,那么会在变为活跃时接收最新数据;
在ViewModel:
public class SimpleViewModel extends ViewModel {private MutableLiveData<String> content;public MutableLiveData<String> getContent() {if (content == null) {content = new MutableLiveData<>();}return content;}public void setContent(MutableLiveData<String> content) {this.content = content;}/*** 获取数据*/public void getContentData() {//这里可以加一层Repository从网络/缓存加载数据//执行完毕后调用 setValue/postValue方法,最终会回调Activity中的onChange方法content.setValue("我是获取到的数据");//子线程调用 content.postValue(""我是获取到的数据");}}
在Activity或是fragment进行监听观察:
//构建ViewModel对象final SimpleViewModel model = ViewModelProviders.of(this).get(SimpleViewModel.class);//监听content属性变化,只要触发了setValue/postValue方法就会走model.getContent().observe(this, new Observer<String>() {@Overridepublic void onChanged(@Nullable String s) {Log.e("SimpleActivity", "onChanged");btn.setText(s);}});//起始点btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//发起获取数据model.getContentData();}});
LiveData介绍相关推荐
- Android Jetpack系列之LiveData
文章目录 LiveData介绍 LiveData优点 LiveData使用举例 基础用法 进阶用法 Transformations.map()修改数据源 Transformations.switchM ...
- Android Jetpack组件之WorkManger使用介绍
1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...
- Android Jetpack组件之 LiveData使用-源码
1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...
- LiveData ViewModel 使用详解
什么是 LiveData LiveData 是一个可观测的数据持有类,但是不同于通常的被观察者,LiveData 具有生命周期感知能力.通俗点说,LiveData 就是具有 "Live&qu ...
- 【译】LiveData 在 SnackBar/Navigation 情景下的使用(SingleLiveEvent)
前言 本文翻译自[LiveData with SnackBar, Navigation and other events (the SingleLiveEvent case)],详细介绍了 liveD ...
- 阿里大神最佳总结Flutter进阶学习笔记,技术详细介绍
开头 很多人工作了十年,但只是用一年的工作经验做了十年而已. 高级工程师一直是市场所需要的,然而很多初级工程师在进阶高级工程师的过程中一直是一个瓶颈. 移动研发在最近两年可以说越来越趋于稳定,因为越来 ...
- paging library java_Android官方分页组件介绍之Paging的使用详解
Android官方分页组件介绍之Paging的使用详解 发布时间:2018-04-27 13:47, 浏览次数:1618 , 标签: Android Paging Paging 使您的应用程序更容易从 ...
- livedata mvvm_Android MVVM LiveData数据绑定
livedata mvvm We've already implemented MVVM using Data Binding and covered LiveData and Data Bindin ...
- LiveData详细分析
目录介绍 01.LiveData是什么东西 02.使用LiveData的优势 03.使用LiveData的步骤 04.简单使用LiveData 05.observe()和observerForever ...
最新文章
- Android开发--XML文件解析
- linux中常用的头文件
- 创建react应用程序_通过构建电影搜索应用程序在1小时内了解React
- dataGridview与下拉框高级绑定
- 4.3串的模式匹配算法(BF算法)
- 全新的 Discuz! Q 来了!
- [HDU5727]Necklace(二分图最大匹配,枚举)
- Jmeter使用SSL(HTTPS协议)
- PHP 初学者资源收集
- 常用oracle语句
- html5+JS调用手机摄像头扫码
- 埃夫特机器人示教器linux屏幕多少钱,不限 埃夫特机器人电路板维修
- macOs 10.12.2总于修复鼠标驱动了
- SCI 论文免费下载地址
- C++(数据结构与算法):16---特殊矩阵的实现(对角矩阵、三对角矩阵、下三角矩阵、上三角矩阵、对称矩阵)
- java逻辑删除代码_MyBatis-Plus之逻辑删除的实现
- 微分方程matlab绘图,用matlab解微分方程组并作图
- 8021什么意思_无线网络标准IEEE802.11n是什么意思
- 中国长白山国际林海雪地马拉松节将于三月底举办
- 电脑win10系统如何开定位服务器,win10系统下如何打开/关闭定位?windows10打开/关闭定位图文教程...
热门文章
- 张爱玲的 因为懂得,所以慈悲 如何理解
- 用AI 来一键体验“返老还童”的快乐!马化腾、李彦宏、杨幂都能还原的那种 |儿童节福利...
- 【简介】请使用中国原子能科学研究院学位论文Latex模板
- 解决Flash Helper Service老是弹出流氓广告
- 大家以后不要说百毒的坏话了?
- img 获取二次元图片地址
- 字母消消乐游戏(C语言版本_2023首篇新作)
- 自然资源确权登记数据库建库
- 数独-- 一个高效率生成数独的算法
- ConcurrentHashMap1.8 源码分析