Kotlin协程不在主服务器上运行

时间:2019-12-30 09:01:40

标签: kotlin kotlin-coroutines

我有以下代码:

 Timber.d("Calling coroutine from thread: ${Thread.currentThread().name}")
    scope.launch {
        Timber.d("Current thread: ${Thread.currentThread().name}")
        runTest()
    }

 suspend fun runTest() {
    coroutineScope {
        launch(Dispatchers.Main) {
            Timber.d("Running from thread: ${Thread.currentThread().name}")
        }
    }
}

如果我运行它。应用程序崩溃,日志中没有错误。 在我的日志中,我看到:

  

从线程调用协程:main

     

当前线程:DefaultDispatcher-worker-2

但是我看不到从线程运行的条目:

这是在viewmodel中完成的 我的范围如下:

val scope: ViewModelCoroutineScope = ViewModelCoroutineScope(Dispatchers.Default)

class ViewModelCoroutineScope(
    context: CoroutineContext
) : CoroutineScope {

    private var onViewDetachJob = Job()
    override val coroutineContext: CoroutineContext = context + onViewDetachJob

    fun onCleared() {
        onViewDetachJob.cancel()
    }
}

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

移动到另一台机器上,我终于遇到了有关Dispatchers的错误。

最后,我要做的就是将所有原始协程依赖性替换为:

implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1")