繁体   English   中英

退出屏幕时的网络调用 - Android 协程

[英]Network call when exiting the screen - Android coroutines

我正在尝试在片段中实现一个 UI,用户可以在其中进行各种更新,当用户退出屏幕时,我需要将其发送到后端。 (批量更新)

我正在使用 MVVM 模式,其中网络调用是从 viewmodel 执行的。 现在, viewModelScope.launch在这里不起作用,因为一旦用户退出,协程就会被onCleared()取消。 现在,我添加了 GlobalScope 并且它有效,但我也遇到过这个和这个问题

是否有其他替代方案可以使用 Coroutines 完成此任务?

协程通常被推荐用于应该立即开始的工作,并且范围是 Fragment、Activity、ViewModel 或任何其他具有生命周期的对象的生命周期 由于其余的协程构建器与作用域相关联,因此它们不会完成您想要做的事情,因为用户可能会在任何给定时间离开您的应用程序。

更好的方法是将WorkManagerCoroutineWorker一起使用,它与您的 UI 或应用程序生命周期无关,并且仍然可以利用使用 Coroutines 的优势。 使用WorkManager ,您的工作可以在用户离开您指定的屏幕时进入队列,并且一旦您指定的约束得到满足(例如具有互联网连接),您的工作将被保证运行。 如果您仍在决定使用哪种解决方案,我建议您查看Android 的后台处理指南

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM