如何进行数据共享
ViewModel的数据共享,主要是通过ViewModelProvider来实现的
val viewModel = ViewModelProvider(this).get(ContextViewModel::class.java)
这里的this,可以是任意的ViewModelStoreOwner
ViewModelStoreOwner的主要实现类包括,ComponentActivity和androidx.Fragment
使用相同的this,拿到的就是同一个ViewModel对象
ViewModel数据共享原理
- ViewModelStoreOwner中维护了一个ViewModelStore,用于根据class提供ViewModel
- 当指定class的ViewModel已存在时,直接取出复用,否则新建ViewModel返回