跨页面共享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回答

LovelyChubby

2022-02-11

你用的lifescycle-viewmodel依赖库是哪个版本呢?

可以断点跟进到ViewModelProvider的get方法,断点一看便知哈

0
2
默小铭
非常感谢!
2022-02-14
共2条回复

默小铭

提问者

2022-02-14

经老师指点,改称这样就可以了

mViewModel = ViewModelProvider(
    MyApplicationViewModelProvider.AndroidViewModelFactory.getInstance()
).get(CounterViewModel::.)


0
0

LovelyChubby

2022-02-11

只有一个原因就是viewmodelStore两次不是同一个对象

0
0

开发商业级热门短视频App 掌握Jetpack组件库

Jetpack架构大揭秘,全组件实战主流且功能完整的短视频App

1364 学习 · 607 问题

查看课程