0

我尝试为 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() }

我有什么做错的方式,或者有什么更好的实施建议吗?

4

0 回答 0