首页 > 解决方案 > MVVM 中的 Activity 到 Activity 通信

问题描述

我们一直在使用这里提到的附加功能在活动之间共享数据。现在有了 MVVM,数据在 viewmodel 中可用,下一个要启动的活动绑定到另一个 viewmodel。

Activity1 -> ViewModel1

Activity2 -> ViewModel2

我需要在启动 Activity2 时将数据从 ViewModel1 发送到 ViewModel2

在 MVVM 架构中的活动之间共享数据的正确方法是什么?

标签: androidmvvmsoftware-design

解决方案


一种方法是使用 Parcelable 传递数据。Activity1除此之外,在依赖倒置方面,另一种方法是在和之间共享某种数据结构的相同实例Activity2

假设您有一个User类,在SignInActivity您填写该类并ProfileActivity从该类获取/更新数据。

因此,使用 DI 框架(如 Dagger),您可以创建一个具有应用程序生命周期的类:

class UserStore/Repository/OrWhatEver {
    val user : LiveData<User> 

    fun update(user: User) {
      // ...
    }
}

要实现更多的响应式风格,您可以使用LiveData.


推荐阅读