Android开发通过ViewModel实现两个Activity之间的数据传递

在Android开发中,使用Kotlin通过ViewModel实现两个Activity之间的数据传递,需要结合ViewModel的作用域和LiveData的特性来实现跨页面的数据共享。ViewModel 本身是绑定到特定 LifecycleOwner(如 Activity 或 Fragment)的作用域的,直接通过 ViewModelProvider 无法实现跨 Activity 的 ViewModel 共享,需要利用 Application 上下文和自定义 ViewModelStore 实现全局共享的 ViewModel,以下是具体实现步骤及相关原理:

  1. 创建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(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菠萝加点糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值