如何解决退出屏幕时进行网络通话-Android协程
我正在尝试在一个片段中实现一个UI,用户可以在其中进行各种更新,并且当用户退出屏幕时,我需要将其发送到后端。 (批量更新)
我正在使用MVVM模式,其中从viewmodel执行网络调用。现在,viewModelScope.launch
在这里不起作用,因为一旦用户退出,协程将被onCleared()
取消。
现在,我添加了GlobalScope并可以使用,但是我也遇到过this和这个question
还有其他替代方法可以用协同程序完成此操作吗?
解决方法
协程通常被建议用于应立即开始的工作,并且应作用于Fragment,Activity,ViewModel或具有生命周期的任何其他对象的生命周期。由于其余的协程构建器都与作用域绑定,因此它们将无法完成您要尝试执行的操作,因为用户可能会在任何给定时间离开您的应用。
一种更好的方法是将WorkManager与CoroutineWorker一起使用,这与您的UI或应用程序寿命无关,但仍具有使用协同程序的优势。使用WorkManager
,当用户离开您指定的屏幕时,您的工作就可以入队,并且一旦满足您指定的约束(例如,具有Internet连接),就可以保证运行您的工作。我建议您检查Android's Guide to background processing是否仍在确定要使用哪种解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。