JetPack->ViewModel
1、ViewModel 按这个名字来理解,是介于视图(view)和数据模型(Model)之间的产物,它起到了桥梁的作用,使视图和数据分离,也能够保持通信.
//原理即源码
2、ViewModel 的实例化是通过ViewModelProvider,其内部接受一个ViewModelStoreOwner,而FragmentActivity
默认是实现了ViewModelStoreOwner接口的,所以在参数 this (指当前activity),ViewModelStore,从名字可以看出存储有关的,其内部是一个hashMap ,viewModel 与页面activity 没有关联,它们是通过viewModelprovider关联的,当页面需要的时候,会向它索要,viewModelProvider检查该ViewModel 是否已经缓存在map中,若存在则返回,若不存在则实例化一个,放入缓存.
3 、注意:不要向ViewModelProvider传入任何类型的context,可能会引起内存显露(页面无法被回收被销毁)

浙公网安备 33010602011771号