JetPack之ViewModel最新源码详细分析
本文会基于最新版ViewModel使用方法与源码进行详细分析,从注册到实现ViewModel界面数据如何保存与管理全部涉及。 ** 简介: ** ViewModel 是JetPack系列库之一,它用来对组件的界面数据进行管理,且当组件的状态发生改变时数据依然留存。 优点:1.当所依赖组件的状态发生改变时,例如屏幕旋转等,界面数据不会发生改变 2.实现MVVM架构的基础,在日常开发中, ViewModel 就是MVVM架构的VM层,它相当于MVP架构的present,我们可以将业务逻辑以及数据交互的部分放入ViewModel中。 源码分析: 版本:viewmodel:1.1.1 此处使用的示例代码与livedata源码分析的相同,不影响流程分析 首先构造一个继承于 ViewModel 的类 接着创建一个 factory 实例传入 ViewModelProvider(this,factory ) 中去并调用 get 方法将我们的 ViewModel 作为参数传入。 此处需要注意的是在以前的版本中直接通过 ViewModelProviders.of(this).get() 方法来完成这个操作的。在最新的版本中已经取消了of方法,并且构造方法必须要传入2个参数 查看 ViewModelProvider 的构造方法可看出构造 ViewModelProvider 时必须传入2个参数才行