我有以下代码:
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()
}
}
我在做什么错了?
答案 0 :(得分:1)
移动到另一台机器上,我终于遇到了有关Dispatchers的错误。
最后,我要做的就是将所有原始协程依赖性替换为:
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1")