目前,我正在使用 ViewModel在我的应用程序中加载节目列表。然后,我将它显示在主屏幕上。它在配置更改后仍然存在,并且不会引发内存泄漏,因为 ViewModel 具有此功能。
现在我需要做一些不同的事情。我需要登录一个使用 retrofit 2 和 rxjava 2 对端点进行网络调用的用户,他将键入电子邮件和密码,然后将被重定向到 MainActivity。其次,我还需要更新用户信息,他输入他的新信息,然后我发送到服务器。
我可以使用 ViewModel 登录用户或更新用户信息吗?如果不是,我应该使用什么?
我需要什么
这个改造 2 调用应该能够承受配置更改,如旋转屏幕,并且不会导致内存泄漏。
我尝试过的
在 MainActivity 中使用 enqueue() 方法调用改造。 Obs:这种方法不好,因为它在 ui 类中放置了很多东西,会引起内存泄漏。
使用静态内部类。 Obs:它无法在配置更改后存活,因为我需要在 onDestroy() 中取消任务。
MVP 似乎可以让用户登录。
最佳答案
你可以查看谷歌示例项目,特别是这个类
通常你会在模型 View 中触发网络操作,而实现网络逻辑的代码写在不同的类中(例如ApiManager
),然后在你的ViewModel中获取结果
LoginViewModel
将拥有某个网络管理器类的对象当您点击登录时,viewmodel 将调用
networkManager.performLogin()
然后将结果传递给 View 模型(RxJava 在这里很方便)。
当您收到结果时,在您的 ViewModel 中执行您需要的任何处理
关于android - 我可以使用 ViewModel 向服务器发送数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52332326/