我尝试为 IO 进程管理我的线程。其中之一是用于领域。
喜欢……</p>
init {
val ai = app.packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA)
bundle = ai.metaData
runBlocking(appExecutors.dbContext) {
Realm.init(app)
}
}
如果我将 val dbContext 设置为 newSingleThreadContext(“databaseIO”)... 效果很好,但是我开发了一个 android-library,所以如果 app 模块上有 Realm 的实现,我需要在同一个线程上设置用法。通常,每个人都使用主线程来访问 Realm。在那种情况下,我尝试设置 UI,但它导致了 ANR。我可以理解它为什么会导致 ANR,但我找不到适合这种情况的解决方案。
注意:如果我将它与启动一起使用......它适用于这里。但是在我的 RealmManager 类中,我需要使用 runBlocking。所以没办法只用launch…:slight_smile: like…</p>
fun getProfile(id: String): Profile? {
try {
return runBlocking(dbCoroutine) {
val query = realm!!.where(Profile::class.java).equalTo("numbers.id", id)
query.findFirst()
}
} catch (ex: Exception) {
logger.e(TAG, ex)
return null
}
}
或者
internal val allProfiles: List<Profile>
get() = runBlocking(dbCoroutine) { realm!!.where(Profile::class.java).findAll() }
我有什么做错的方式,或者有什么更好的实施建议吗?