簡體   English   中英

在 onPause() 期間使用協程保存數據(避免 ViewModel 取消和全局協程范圍)

[英]Saving data with coroutines during onPause() (avoiding ViewModel cancellation and global coroutine scope)

在 onPause() 期間保存一些數據(到房間)時

this.viewModelScope.launch(Dispatchers.IO){ repo.updateNote(id, text) }

我注意到大多數情況下都不會保存,因為如果用戶離開片段,viewModelScope 會被取消。

由於使用某種類型的全局 scope 似乎因各種原因不受歡迎,是否有一種優雅的方法可以在不將其綁定到 ViewModelScope 的情況下對這個 db-save 進行“一勞永逸”?

我可以為此創建一個服務,但感覺就像一個丑陋的黑客,我也可以使用 runBlocking ,它可以工作,但可能會掛起片段,我正在尋找一種優雅的方式來使用協程來做到這一點。

即發即棄正是GlobalScope的用途:不應該取消的事情,所以就使用它。

GlobalScope.launch(Dispatchers.IO){ repo.updateNote(id, text) }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM