JobCancellationException StandaloneCoroutine был отменен - PullRequest
1 голос
/ 18 марта 2020

Поскольку мы используем сопрограммы (используется 1.3.5), у нас есть много кра sh: JobCancellationException - StandaloneCoroutine был отменен .

Я читал много веток о тезисах проблем, и я пробовал много решений в производстве, но всегда происходит сбой.

Во всех наших моделях представления мы используем модель представления, так что все в порядке.

Но на нашем уровне данных нам нужно запустить отслеживание событий, которые запускают и забывают задачу. На первом этапе мы использовали GlobalScope.launch. Я думал, что CancelletationException произошел из-за этой глобальной области видимости, поэтому я удалил его и создал расширение на уровне данных, используя SupervisorJob и CoroutineExceptionHandler:

private val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob())
private val coroutineExceptionHandler by lazy { CoroutineExceptionHandler { _, throwable -> logw("Error occurred inside Coroutine.", throwable) } }

fun launchOnApp(block: suspend CoroutineScope.() -> Unit) {
    appScope.launch(coroutineExceptionHandler) { block() }
}

Но я всегда видел сбой при этот код Нужно ли использовать cancelAndJoin метод? Какую стратегию я могу использовать с чистой архитектурой и такого рода работой, пожалуйста?

Заранее спасибо

...