跨页面共享ViewModel无效
来源:12-3 标签列表页&ViewModel数据共享

默小铭
2022-02-07
架构课上老师这种写法,我写代码模拟了一下无效,两个页面打印的ViewModel内存地址是不一样的
//让Application实现ViewModelStoreOwner 接口
class MyApp: Application(), ViewModelStoreOwner {
private val appViewModelStore: ViewModelStore by lazy {
ViewModelStore()
}
override fun getViewModelStore(): ViewModelStore {
return appViewModelStore
}
}
val viewmodel = ViewProvider(application).get(HiViewModel::class.java)
如果想定义一个app 全局共享的ViewModel,该怎么实现呢??
写回答
3回答
-
你用的lifescycle-viewmodel依赖库是哪个版本呢?
可以断点跟进到ViewModelProvider的get方法,断点一看便知哈
022022-02-14 -
默小铭
提问者
2022-02-14
经老师指点,改称这样就可以了
mViewModel = ViewModelProvider( MyApplicationViewModelProvider.AndroidViewModelFactory.getInstance() ).get(CounterViewModel::.)
00 -
LovelyChubby
2022-02-11
只有一个原因就是viewmodelStore两次不是同一个对象
00
相似问题