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