在Android开发中,使用Kotlin通过ViewModel实现两个Activity之间的数据传递,需要结合ViewModel的作用域和LiveData的特性来实现跨页面的数据共享。ViewModel 本身是绑定到特定 LifecycleOwner(如 Activity 或 Fragment)的作用域的,直接通过 ViewModelProvider 无法实现跨 Activity 的 ViewModel 共享,需要利用 Application 上下文和自定义 ViewModelStore 实现全局共享的 ViewModel,以下是具体实现步骤及相关原理:
-
创建Application级别的ViewModelStore
- ViewModelStore 的作用
ViewModelStore 是 ViewModel 的容器,负责存储和管理 ViewModel 实例。默认情况下,每个 Activity 或 Fragment 拥有独立的 ViewModelStore,其生命周期与所属组件绑定。 - Application 级别的扩展
通过自定义一个全局的 ViewModelStore,并使其生命周期与 Application 一致,可实现多个 Activity 共享同一个 ViewModel 实例。
class MyApplication : Application(), ViewModelStoreOwner { private val globalViewModelStore = ViewModelStore() override fun getViewModelStore(): ViewModelStore = globalViewModelStore // 提供全局 ViewModelProvider 的获取方法 fun getGlobalViewModelProvider( - ViewModelStore 的作用

最低0.47元/天 解锁文章
1079

被折叠的 条评论
为什么被折叠?



