我有以下设置(简化):
我正在寻找一种方法来使用Coroutines执行以下操作:
有没有办法用Coroutines实现这个目标?
答案 0 :(得分:1)
解决方案如下:
当应用程序启动时,它会触发通过存储库预取一些数据。 存储库包含对正在运行的协同程序的作业引用。 到达目标屏幕时,将调用存储库中的另一个方法。在这个方法中,app现在只是检查作业是否仍处于活动状态,如果是,则调用job.join()以等待执行完成后再继续。
这是问题的简化。请关注问题的解决方案: - 启动协同程序, - 检查协程是否仍在运行, - 如果是,请在执行其他逻辑之前等待协程完成
在存储库中,它看起来如下:
project_name
答案 1 :(得分:0)
协同程序很热,因此您可以通过在background或UI上下文中启动任务来推送数据:
job = launch(CommonPool) {
val data = getDataFromBackend().await()
val result = repository.handleData(data).await()
launch(UI) {
// update the UI here based on data or result
}
}