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,可能会引起内存显露(页面无法被回收被销毁)

 

posted @ 2020-09-06 00:01  初心(dourl)  阅读(137)  评论(0)    收藏  举报