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介绍相关推荐

  1. Android Jetpack系列之LiveData

    文章目录 LiveData介绍 LiveData优点 LiveData使用举例 基础用法 进阶用法 Transformations.map()修改数据源 Transformations.switchM ...

  2. Android Jetpack组件之WorkManger使用介绍

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  3. Android Jetpack组件之 LiveData使用-源码

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  4. LiveData ViewModel 使用详解

    什么是 LiveData LiveData 是一个可观测的数据持有类,但是不同于通常的被观察者,LiveData 具有生命周期感知能力.通俗点说,LiveData 就是具有 "Live&qu ...

  5. 【译】LiveData 在 SnackBar/Navigation 情景下的使用(SingleLiveEvent)

    前言 本文翻译自[LiveData with SnackBar, Navigation and other events (the SingleLiveEvent case)],详细介绍了 liveD ...

  6. 阿里大神最佳总结Flutter进阶学习笔记,技术详细介绍

    开头 很多人工作了十年,但只是用一年的工作经验做了十年而已. 高级工程师一直是市场所需要的,然而很多初级工程师在进阶高级工程师的过程中一直是一个瓶颈. 移动研发在最近两年可以说越来越趋于稳定,因为越来 ...

  7. paging library java_Android官方分页组件介绍之Paging的使用详解

    Android官方分页组件介绍之Paging的使用详解 发布时间:2018-04-27 13:47, 浏览次数:1618 , 标签: Android Paging Paging 使您的应用程序更容易从 ...

  8. livedata mvvm_Android MVVM LiveData数据绑定

    livedata mvvm We've already implemented MVVM using Data Binding and covered LiveData and Data Bindin ...

  9. LiveData详细分析

    目录介绍 01.LiveData是什么东西 02.使用LiveData的优势 03.使用LiveData的步骤 04.简单使用LiveData 05.observe()和observerForever ...

最新文章

  1. Android开发--XML文件解析
  2. linux中常用的头文件
  3. 创建react应用程序_通过构建电影搜索应用程序在1小时内了解React
  4. dataGridview与下拉框高级绑定
  5. 4.3串的模式匹配算法(BF算法)
  6. 全新的 Discuz! Q 来了!
  7. [HDU5727]Necklace(二分图最大匹配,枚举)
  8. Jmeter使用SSL(HTTPS协议)
  9. PHP 初学者资源收集
  10. 常用oracle语句
  11. html5+JS调用手机摄像头扫码
  12. 埃夫特机器人示教器linux屏幕多少钱,不限 埃夫特机器人电路板维修
  13. macOs 10.12.2总于修复鼠标驱动了
  14. SCI 论文免费下载地址
  15. C++(数据结构与算法):16---特殊矩阵的实现(对角矩阵、三对角矩阵、下三角矩阵、上三角矩阵、对称矩阵)
  16. java逻辑删除代码_MyBatis-Plus之逻辑删除的实现
  17. 微分方程matlab绘图,用matlab解微分方程组并作图
  18. 8021什么意思_无线网络标准IEEE802.11n是什么意思
  19. 中国长白山国际林海雪地马拉松节将于三月底举办
  20. 电脑win10系统如何开定位服务器,win10系统下如何打开/关闭定位?windows10打开/关闭定位图文教程...

热门文章

  1. 张爱玲的 因为懂得,所以慈悲 如何理解
  2. 用AI 来一键体验“返老还童”的快乐!马化腾、李彦宏、杨幂都能还原的那种 |儿童节福利...
  3. 【简介】请使用中国原子能科学研究院学位论文Latex模板
  4. 解决Flash Helper Service老是弹出流氓广告
  5. 大家以后不要说百毒的坏话了?
  6. img 获取二次元图片地址
  7. 字母消消乐游戏(C语言版本_2023首篇新作)
  8. 自然资源确权登记数据库建库
  9. 数独-- 一个高效率生成数独的算法
  10. ConcurrentHashMap1.8 源码分析