【发布时间】:2020-01-24 07:59:43
【问题描述】:
如何在使用 Coroutines 和 ViewModel 退出一个 Fragment 时方便地执行网络请求?
工作流程是:用户输入一个包含盒子名称列表的片段 A。他选择了一个并被导航到片段 B,在那里他可以扫描条形码,这些条形码被添加到选定的框(在内存中)。扫描完所有必需的条形码后,他单击“返回”按钮,此时提到的带有条形码的框应发送到服务器(当然序列化为 JSON)。
ViewModelScope 当然不是解决方案,因为 Fragment 的 B ViewModel 已被清除。我尝试使用 WorkManager,但我不知道如何方便地做到这一点 - 它需要将 Context 引用传递给 ViewModel(为了使 ViewModel 从 Android 的平台引用中清除并简化单元测试,我想避免这种情况)并通过使用 Data 对象的 Box。
有没有更好的解决方案?
【问题讨论】:
标签: android mvvm kotlin-coroutines