是否可以使用 ViewModel 将数据发送到服务器?



目前,我正在使用ViewModel在我的应用程序中加载节目列表。然后,我在主屏幕上显示它。它可以在配置更改后幸存下来,并且不会引发内存泄漏,因为 ViewModel 具有此功能。

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

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

我需要什么

此改造 2 调用应能够承受配置更改,如旋转屏幕,并且不会导致内存泄漏。

我尝试了什么

  1. 在 MainActivity 中使用 enqueue(( 方法调用 retrofit。观察:这种方法不好,因为它在 ui 类中放置了很多东西,它会引起内存泄漏。

  2. 使用静态内部类。观察:它不能在配置更改中幸存下来,因为我需要在 onDestroy(( 中取消任务。

  3. MVP 似乎可以登录用户。

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

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将具有某个网络管理器类的对象

  • 单击登录时,视图模型将调用networkManager.performLogin()

  • 然后将结果传递给视图模型(RxJava在这里很方便(。

  • 在 ViewModel 中,当您收到结果时,执行所需的任何处理

相关内容

  • 没有找到相关文章

最新更新