如何在后台线程中执行查询?

Rém*_*ndt 7 sqldelight kotlin-multiplatform-mobile

我目前正在考虑拥有一个由 SQLdelight 支持的 KMM 应用程序,用于所有与域相关的操作。

SQLdelight 似乎提供了非常好的接口,但是似乎所有写入调用(插入/更新/删除)都是使用阻塞调用实现的,所以我担心它会通过大量阻塞主线程来损害应用程序的响应能力。

是否有推荐的方法来执行此类操作而不阻塞主线程?

该应用程序也必须在 iOS 上运行,所以我不能承受太多的冻结。

tuf*_*koi 0

回答有点晚了,但可能对其他人有用:

您应该假设wiwthContext(Dispatchers.Default)您正在使用native-mt协程库的版本。这允许您确保插入/更新/删除不在主线程上执行。

您还可以使用 sqldelightcoroutine-extensions库从查询返回流以观察数据库中的更改。