LiveData原理

89 阅读1分钟
  1. 生命周期感知: LiveData是一个生命周期感知型组件。这意味着,它能够识别其他应用程序组件(如Activity、Fragment或Service)的生命周期状态。因此,在某些情况下(例如当关联的Activity处于非活动状态时),LiveData会自动停止发出更新。
  2. 数据更新: 当你向LiveData对象设置新值时,只有处于活动状态(即在前台)的观察者才会接收到更新。如果没有活跃观察者,那么这个更新就会被缓存起来,等待至少有一个观察者变成活跃状态。
  3. 线程安全: LiveData确保所有操作都在主线程上执行。比如说, setValue(T) 方法必须从主线程调用, 它负责通知注册了Observer并且其LifecycleOwner处于active状态(STARTED或RESUMED) 的所有Observer们. 另一方面, postValue(T) 方法可以从任何线程调用, 它将使用主线程去通知相应Observer.
  4. 无内存泄漏: 观察者们被绑定到Lifecycle对象上,并且在其LifecycleOwner被销毁时自动清除他们自己。
  5. 无需手动处理生命周期: UI 组件只需要观测相关数据而不需要停止或恢复观测。 LiveData 自动管理所有关于 LifecycleOwner 生命周期相关书写和处理。
  6. 始终保持最新状态:即使LifecycleOwner暂停也能收到最新信息 (例如后台activity接收到最新GPS位置信息)
  7. 资源共享:你可以通过扩展 LiveData 对象实现任何类型资源共享.