最佳实践MVVM将数据从一个Activity传递到另一个Activity

Sas*_*eld 7 android mvvm android-architecture-components

将数据从一个活动(主)传递到另一个活动(详细信息)的当前最佳做法是什么.

  1. 一种可能的方法是拥有一个在主服务器和详细信息之间共享的视图模型类.单击主活动中的项目时,所选条目将设置为视图模型.因此,详细活动可以读取所选条目,因为它使用相同的视图模型.

  2. 将所选对象的row-id从master-activity作为bundle-extra传递给detail活动.详细活动通过使用加载它的视图模型ViewModelProviders,然后将row-id传递给加载实际记录的视图模型.

  3. 在开始详细活动之前初始化视图模型,并将所选对象直接设置为详细活动的初始化视图模型.

输入将非常感谢!

Jef*_*man 2

您的详细活动应该能够从保存的状态重建自身。例如,当您的详细信息位于前台且屏幕关闭时,您的整个应用程序可能会从内存中删除。当屏幕重新打开时,Android只会启动您的详细活动并期望它从保存的状态中获取所需的内容。

因此,任何依赖于主设置数据到单例/全局某处的设计都不会很好。我不清楚,但这似乎就是您在(1)和(3)中所建议的。

恕我直言,将行 ID 设置为传递给详细信息活动的额外内容。保存/恢复该行 ID 以及详细保存状态。让详细信息活动根据行 ID 构建自己的模型。它使细节独立,因为它不会依赖于在启动之前初始化某些复杂模型的其他东西。这也使得它更加模块化和可测试。