簡體   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