Android Jetpack-ViewModel、LiveData 使用注意事项

版权声明:本文为匆忙拥挤repeat(stone)原创文章,转载请注明出处 —— http://blog.csdn.net/jjwwmlp456 https://blog.csdn.net/jjwwmlp456/article/details/88877377

ViewModel

维持对象在给定组件(Fragment/Actiivity)的生命周期范围中, 直到组件 destroy 时,才销毁 ViewModel 实例。
内部可以声明创建 LiveData的实例变量。

LiveData 是一个可观察内部数据变化的对象。可以简单使用其实现类 MutableLiveData。

内部有方法:
postValue 可以从异步线程中,将数据设置 data 中
setValue 从主线中,设置数据到 data 中
observe(LifecycleOwner owner, Observer observer) ; 默认support 包中的 Fragment/Activity 是实现了LifecycleOwner 的。新的 androidx 包中的也是实现了的。
注册观察者,并指定 lifecycle 的所有者
removeObserver(Observer observer); 删除指定观察者
removeObservers(LifecycleOwner owner); 删除所有观察者

LiveData 的特征:

  1. post/setValue这两个方法,每次都会替换成新值,即会持有最后一次的值。
    如果网络断开,请求新值,这时还是会返回 上次的值。即当前没有新的值时,就应该 post/setValue(null); 前台获取时可以判断知道没有取得新值
  2. 关于 Observer:数据变化后,相应 owner 的所有观察者都将处理变化事件。那么在使用时就要注意,是否需要每次向 observe(owner, observer)中 new Observer(); 观察者的onChanged()执行完成后,是否要 removeObserver();

猜你喜欢

转载自blog.csdn.net/jjwwmlp456/article/details/88877377