在onPause()期间使用协程保存数据(避免使用ViewModel取消和全局协程范围)

时间:2019-10-21 02:12:16

标签: android coroutine kotlin-coroutines

使用

在onPause()期间保存一些数据(到房间)
  

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

我注意到大多数情况下不会保存,因为如果用户离开该片段,则会取消viewModelScope。

由于出于各种原因,人们似乎不赞成使用某种类型的全局范围,是否有一种优雅的方法来触发并忘记该数据库保存而不将其绑定到ViewModelScope上?

我可以为此创建一个服务,但是感觉就像是一个丑陋的hack,我也可以使用可以运行的runBlocking,但是可能会挂起片段,我正在寻找一种使用协程来完成此操作的优雅方法。

1 个答案:

答案 0 :(得分:0)

解雇就是GlobalScope的目的:不应该取消的事情,所以就用吧。

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