我可以使用ViewModel将数据发送到服务器吗?

问题描述 投票:2回答:1

目前,我正在使用ViewModel在我的应用中加载节目列表。然后,我将其显示在主屏幕中。由于ViewModel具有此功能,因此它可以保留配置更改并且不会引发内存泄漏。

现在我需要做一些不同的事情。我需要使用改造2和rxjava 2登录用户进行网络呼叫,他将输入电子邮件和密码,然后重定向到MainActivity。其次,我还需要更新用户信息,他输入新信息然后发送到服务器。

我可以使用ViewModel登录用户或更新用户信息吗?如果没有,我会用什么代替呢?

我需要的

这种改进2调用应该能够继续进行配置更改,如旋转屏幕,并且不会导致内存泄漏。

我尝试了什么

  1. 使用MainActivity中的enqueue()方法调用改进。 Obs:这种方法并不好,因为它在ui类中引入了很多东西,它会引发内存泄漏。
  2. 使用静态内部类。 Obs:它不能幸免于配置更改,因为我需要取消onDestroy()中的任务。
  3. MVP似乎可以登录用户。
android mvvm retrofit2 viewmodel
1个回答
1
投票

您可以查看Google示例项目,特别是此类

https://github.com/googlesamples/android-architecture/blob/todo-mvvm-databinding/todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskViewModel.java

通常,您将在模型视图中触发网络操作,而实现网络逻辑的代码则编写在不同的类(例如ApiManager)中,然后在ViewModel中获取结果

  • LoginViewModel将拥有一些网络管理员类的对象
  • 单击login时,viewmodel将调用networkManager.performLogin()
  • 然后将结果传递给viewmodel(RxJava在这里很方便)。
  • 在ViewModel中,在收到结果时执行您需要的任何处理
© www.soinside.com 2019 - 2024. All rights reserved.