gpt4 book ai didi

android - 如何等待协程 Dispatch.IO 数据库查询完成以填充 RecyclerView

转载 作者:行者123 更新时间:2023-11-29 22:39:48 26 4
gpt4 key购买 nike

我正在用 Kotlin 重写我的 Java 笔记应用。我正在尝试使用从我的 SQLite 数据库查询构建的 TextView 填充 RecyclerView,但我无法弄清楚如何让它等待查询完成,或者在完成时采取行动。

在我的 Java 版本中,我通过使用 AsyncTask 进行查询然后调用 PostExecute 来完成此操作。

现在,在我的 Kotlin 版本中,我正在使用 launch(Dispatchers.IO),但我不确定如何进行其余操作。我如何实现相同的功能?

最佳答案

在协程中,您可以创建一个由不同协程代码组成的队列。例如,coroutine1 中的一个 block 和 coroutine2 中的另一个 block ,并使它们按顺序运行。可以使用 withContext(CoroutineContext)

假设这段代码:

fun uiCode() {
// doing things specially on mainThread
}

fun uiCode2() {
// More work on mainThread
}

fun ioCode() {
// Doing something not related to mainThread.
}

fun main() {

launch(Dispatchers.Main) { // 1- run a coroutine
uiCode() // will run on MainThread
withContext(Dispachers.IO) { // 2- Coroutine will wait for ioCode
ioCode() // Will run on ioThread
}
uiCode2() // 3- And then it will run this part
}
}

如果您想以异步方式执行此操作,请使用 launch(),而不是 withContext()

关于android - 如何等待协程 Dispatch.IO 数据库查询完成以填充 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59130408/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com