Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 没有连接到存储库的活动是否应该具有ViewModel?_Android_Mvvm_Viewmodel - Fatal编程技术网

Android 没有连接到存储库的活动是否应该具有ViewModel?

Android 没有连接到存储库的活动是否应该具有ViewModel?,android,mvvm,viewmodel,Android,Mvvm,Viewmodel,我试图理解Android上的MVVM 假设我有这个简单的应用程序:(像谷歌联系人应用程序一样的行为) ListActivity:来自服务器的联系人列表 DetailActivity:一个联系人的详细信息屏幕(通过单击列表项打开) 对于这个列表,很清楚如何实现mvvm模式: 活动正在观察视图模型中的实时数据,并正在更新回收器视图 ViewModel:getAllContacts from repository 存储库:从服务器/DB/等获取所有联系人 如果用户现在单击列表详细信息屏幕中

我试图理解Android上的MVVM

假设我有这个简单的应用程序:(像谷歌联系人应用程序一样的行为)

  • ListActivity:来自服务器的联系人列表
  • DetailActivity:一个联系人的详细信息屏幕(通过单击列表项打开)

对于这个列表,很清楚如何实现mvvm模式:

  • 活动正在观察视图模型中的实时数据,并正在更新回收器视图
  • ViewModel:getAllContacts from repository
  • 存储库:从服务器/DB/等获取所有联系人

如果用户现在单击列表详细信息屏幕中的联系人,将打开: ListActivity不执行putExtra(“联系人”,chosenContact),正在启动detailActivity

DetailActivity正在获取此ContactObject并正在创建此视图:

  • 显示图像
  • 显示名称
  • 创建联系人选项(电话、短信、视频)
正如您在我的示例中所看到的,DetailScreen没有与存储库通信。 它已经从intent收到了所有需要的数据


问题:

  • 是否应为此详细信息活动创建视图模型
  • 如果是,如果不需要连接到存储库,则此视图模型的任务是什么
  • 在谷歌联系人应用程序中,我可以选择删除联系人和将联系人添加到收藏夹。这些都应该在viewModel中完成,而此viewModel需要连接到存储库?详细活动的任务,如呼叫、发送消息、视频呼叫或共享联系人需要上下文,就我所知,MVVM应该在活动类中完成吗
  • 是否应为此详细信息活动创建视图模型

    就你而言,没有必要这样做

    如果是,如果不需要连接到存储库,则此视图模型的任务是什么

    ViewModel有助于保持活动/片段的状态。如果您有微调器、复选框或任何其他可能更改的字段(如用户插入的描述文本字段),viewmodel将有助于在用户旋转手机时保留数据

    在谷歌联系人应用程序中,我可以选择删除联系人和将联系人添加到收藏夹。这些都应该在viewModel中完成,而此viewModel需要连接到存储库

    是的,你的UI会在你的viewmodel中调用一个有趣的东西,它会发送到存储库,等等

    详细活动的任务,如呼叫、发送消息、视频呼叫或共享联系人需要上下文,就我所知,MVVM应该在活动类中完成吗

    确切地说,例如,不需要使用viewmodel发送与其他应用程序共享联系人的意图