LivaData基本使用与源码分析

特点

  • 数据可以被观察者订阅
    基于观察者模式实现的。
  • 能够感知组件的生命周期()
    组件持有LifecycleOwner,并将LifecycleOwner添加到LiveData类中,所以能够感知组件的生命周期;同时也
    将观察者(Observer<T>)添加到LivaData中,当需要更新数据时,调用Observer<T>的onChanged(T t)回调
    到组件当中。
  • 当数据更新时,只有组件处于激活状态(STARTED、RESUMED)时才会通知观擦者
    由于LiveData通过LifecycleOwner能感知组件的生命周期,所以能很好的控制什么时候通知观察者。

优点

从LiveData的特点能知道它有以下的优点

  • 能够保证数据和UI统一
    这个和LiveData采用了观察者模式有关,LiveData是被观察者,当数据有变化时会通知观察者(UI)。
  • 减少内存泄漏
    这是因为LiveData能够感知到组件的生命周期,当组件处于DESTROYED状态时,观察者对象会被清除掉。
  • 当Activity停止时不会引起崩溃
    这是因为组件处于非激活状态时,不会收到LiveData中数据变化的通知。
  • 不需要额外的手动处理来响应生命周期的变化
    这一点同样是因为LiveData能够感知组件的生命周期,所以就完全不需要在代码中告诉LiveData组件的生命周
    期状态。
  • 组件和数据相关的内容能实时更新
    组件在前台的时候能够实时收到数据改变的通知,这是可以理解的。当组件从后台到前台来时,LiveData能
    够 将最新的数据通知组件,这两点就保证了组件中和数据相关的内容能够实时更新。
  • 针对configuration change时,不需要额外的处理来保存数据
    我们知道,当你把数据存储在组件中时,当configuration change(比如语言、屏幕方向变化)时,组件会被recreate,然而系统并不能保证你的数据能够被恢复的。当我们采用LiveData保存数据时,因为数据和组件分离了。当组件被recreate,数据还是存在LiveData中,并不会被销毁。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言: 这是一篇Android官方关于LiveData介绍的翻译,正如名字所展示的,它是对存活数据的一个封装类,把...
    三秋桂子仪同三司阅读 2,644评论 1 14
  • 在Model - build.gradle添加依赖 LiveData是一个可观察的数据持有者类。与常规可观察性不同...
    贝贝beibei96阅读 1,436评论 0 1
  • 前言: 作为一名移动互联网App研发人员,在实际项目的研发过程中,保质保量高效率,方便快捷,同时方便开发者之间的互...
    Yagami3zZ阅读 4,710评论 1 9
  • 定义 简单地说,LiveData是一个数据持有类。它具有以下特点: 数据可以被观察者订阅; 能够感知组件(Frag...
    陈晓松快点跑阅读 30,723评论 2 32
  • 看到很多人写,自己也写了个。大概的主要思路:比如一个红包20元5个人抢,最小单位为1元。第一个人抢的范围必须是,1...
    ResearchWorld阅读 1,273评论 0 0