ViewModel
ViewModel在Activity重建后为啥不会被销毁
ViewModel存在于HolderFragment中,而HolderFragment因为设置了setRetainInstance(true),利用此特性可以在Activity重建时存活下来
- ViewModel以键值对的形式存在Activity或Fragment的HolderFragment的ViewModelStore的HashMap中
- 一个Activity或者Fragment可以有很多个ViewModel
- 一个Activity或者Fragment只会有一个HolderFragment
- Activity或者Fragment的HolderFragment会保存在全局单例的HolderFragmentManager的HashMap中,在Activity或者Fragment销毁的时候会移除HashMap中对应的value
- 因为ViewModel是以Activity或者Fragment为存在基础,所以ViewModel可以在当前Activity和Fragment中实现数据共享,前提是传入相同的key值