谈一下 Android 架构中的 lifecycle

ViewModelStores

利用fragment巧妙的保存数据

我们可以在activity和fragment中随意的添加fragment,系统会帮我们管理这个fragment。
我们可以利用这个fragment保存我们的数据。

好处如下:

  1. 这个fragment是不可见的,没有ui去扰乱别人的视线。
  2. 这个数据可以不会因为父亲(activity或fragment)的生命周期的重建而丢失。

看一下 lifecycle 中用的HolderFragment

HolderFragment.png

我们如何得到HolderFragment存储的数据mViewModelStore?

ViewModelStores.png

由ViewModelStores的两个便捷方法即可得到。这时候,你只需要传如你的activity或者fragment就获得啦。

继续看一下实现:


manager去找activity和fragment的孩子

由manager去找,继续。


答案不言自明啦

ViewModelProvider

如其名称,ViewModel的提供者。

ViewModel从哪里来?ViewModelStore。所以这个提供者持有一个ViewModelStore。


持有ViewModelStore

看一下这个提供者是怎么来的。


关键数据ViewModelStore来自你的HolderFragment

顺便看下 factory 有什么用:
当你真正去获得viewmodel的时候:


get viewmodel

没有viewmodel的时候,可以让这个factory去生产viewmodel

LiveData

只需要考虑两点:

  1. 他是数据的容器
  2. 他基于观察者模式

总结:这个容器里面的数据更新了,他会把数据通知给观察者(考虑了,被观察者的状态,如activity有没有被销毁的情况)

数据的容器
当你数据更新的时候,要通知观察者
notify
通知数据的改变

那么他是如何感知 activity 和 frament 的生命周期的呢?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容