ViewModelStores
利用fragment巧妙的保存数据
我们可以在activity和fragment中随意的添加fragment,系统会帮我们管理这个fragment。
我们可以利用这个fragment保存我们的数据。
好处如下:
- 这个fragment是不可见的,没有ui去扰乱别人的视线。
- 这个数据可以不会因为父亲(activity或fragment)的生命周期的重建而丢失。
看一下 lifecycle 中用的HolderFragment
我们如何得到HolderFragment存储的数据mViewModelStore?
由ViewModelStores的两个便捷方法即可得到。这时候,你只需要传如你的activity或者fragment就获得啦。
继续看一下实现:
manager去找activity和fragment的孩子
由manager去找,继续。
答案不言自明啦
ViewModelProvider
如其名称,ViewModel的提供者。
ViewModel从哪里来?ViewModelStore。所以这个提供者持有一个ViewModelStore。
持有ViewModelStore
看一下这个提供者是怎么来的。
关键数据ViewModelStore来自你的HolderFragment
顺便看下 factory 有什么用:
当你真正去获得viewmodel的时候:
get viewmodel
没有viewmodel的时候,可以让这个factory去生产viewmodel
LiveData
只需要考虑两点:
- 他是数据的容器
- 他基于观察者模式
总结:这个容器里面的数据更新了,他会把数据通知给观察者(考虑了,被观察者的状态,如activity有没有被销毁的情况)
数据的容器 当你数据更新的时候,要通知观察者 notify 通知数据的改变
网友评论