在 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 会被取消。
由于各种原因似乎不赞成使用某种类型的全局范围,是否有一种优雅的方法可以在不将其绑定到 ViewModelScope 的情况下即发即弃此 db-save?
我可以为此创建一个服务,但它感觉像是一个丑陋的 hack,我也可以使用 runBlocking ,它可以工作,但可能会挂起片段,我正在寻找一种优雅的方式来使用协同程序来做到这一点。
即发即弃正是 GlobalScope
的用途:不应取消的事情,所以只使用它。
GlobalScope.launch(Dispatchers.IO){ repo.updateNote(id, text) }
在 onPause() 期间使用
保存一些数据(到房间)this.viewModelScope.launch(Dispatchers.IO){ repo.updateNote(id, text) }
我注意到大多数时候不会保存,因为如果用户离开片段,viewModelScope 会被取消。
由于各种原因似乎不赞成使用某种类型的全局范围,是否有一种优雅的方法可以在不将其绑定到 ViewModelScope 的情况下即发即弃此 db-save?
我可以为此创建一个服务,但它感觉像是一个丑陋的 hack,我也可以使用 runBlocking ,它可以工作,但可能会挂起片段,我正在寻找一种优雅的方式来使用协同程序来做到这一点。
即发即弃正是 GlobalScope
的用途:不应取消的事情,所以只使用它。
GlobalScope.launch(Dispatchers.IO){ repo.updateNote(id, text) }