代码之家  ›  专栏  ›  技术社区  ›  David Aleksanyan

在onpause()期间使用协程保存数据(避免viewmodel取消和全局协程作用域)

  •  0
  • David Aleksanyan  · 技术社区  · 5 年前

    在使用

    this.viewmodelscope.launch(dispatchers.io){ 回购更新日期(ID,文本) }

    我注意到大多数情况下都不会进行保存,因为如果用户从片段中导航,那么viewmodelscope将被取消。

    由于各种原因,使用某种类型的全局作用域似乎不受欢迎,是否有一种优雅的方法可以触发并忘记此db save而不将其绑定到viewmodelscope?

    我可以为此创建一个服务,但这感觉像一个丑陋的黑客,我也可以使用runblocking,这是有效的,但可以潜在地挂起片段,我正在寻找一个优雅的方式来做这与协程。

    1 回复  |  直到 5 年前
        1
  •  0
  •   ianhanniballake    5 年前

    火和遗忘正是 GlobalScope 是为了:不应该取消的东西,所以就用它吧。

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