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值
Author

jiangyao

Posted on

2022-10-14

Updated on

2022-10-14

Licensed under