美文网首页Android-Jetpack
谈一下 Android 架构中的 lifecycle

谈一下 Android 架构中的 lifecycle

作者: linheimx | 来源:发表于2017-12-21 20:05 被阅读137次

    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 的生命周期的呢?

    相关文章

      网友评论

        本文标题:谈一下 Android 架构中的 lifecycle

        本文链接:https://www.haomeiwen.com/subject/eoxzwxtx.html