android - 在启动 Activity 中加载数据并将该数据或 ViewModel 共享到 MVVM 中的下一个 Activity

标签 android mvvm android-architecture-components android-livedata

在我的应用程序中,我需要从加载到专用 View 模型中的服务器(使用改造)加载一些数据的提要。 当前发生的事情是 View 模型在其构造函数中调用存储库,然后一旦获取数据,就会通知主 Activity 中的观察 fragment 并相应地更改用户界面。

但是,假设我想在 splash/launcher Activity 期间获取该数据,使用 MVVM 的实现是什么? 我的意思是,由于 View 模型只与一个 Activity 相关联,我们不能在两个 Activity 之间共享相同的 View 模型。

那么我们如何在 Launcher Activity 中加载远程服务器数据,然后在 Main Activity 中使用它呢?

这种情况下的最佳做法是什么?

最佳答案

ViewModel 和 View 之间的关系是 one-to-many .这与 MVP 不同。您可以与其他 View 共享您的 ViewModel,并且可以为每个 View 使用单独的 ViewModel。

UPD:似乎您可以创建 1 个 Activity ,您的 Splash 和 Main Activity 的内容将是 fragment 。所以,从 splash 到 main 你将只交换 fragment 。如果您要在两个 fragment 中创建一个 ViewModel,如下所示:

 ViewModelProviders.of(getActivity()).get(MainViewModel.class);

代替:

ViewModelProviders.of(this).get(MainViewModel.class);

您将在两个 fragment 中获得相同的 ViewModel 实例。

关于android - 在启动 Activity 中加载数据并将该数据或 ViewModel 共享到 MVVM 中的下一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53851977/

相关文章:

c# - 来自列表<object> 的组合框 DisplayMemberPath

WPF 在运行时设置键盘焦点,无需代码

Android Paging Library - 具有多种排序类型的数据+网络

android - MVVM 模式和 startActivity

java - 我收到此错误..请指导我解决它

android - 如果 proguard 开启,生成 .apk 文件时出错

c# - 在数据表中添加标签

android LiveData 或协程 channel

java - 即使选中(勾选),复选框也仅返回 false

android - Altbeacon - 仅在 IMMEDIATE 范围内检测信标并丢弃此范围外的任何信标