Отмените все ожидающие работы Kotlin от onCleared ViewModel - PullRequest
0 голосов
/ 08 ноября 2018

С Kotlin 1.3 можно запустить задание, используя GlobalScope.launch, но я не могу понять, что мне нужно отслеживать, как Job возвращает `` GlobalScope.launch` и отменять все ожидающие задания, если они активны.

В более старой версии launch можно указать parent = parentJob, а можно просто отменить parentJob. Но при использовании GlobalScope.launch как можно отменить все ожидающие задания (легко), так что, скажем, из OnCleared ViewModel можно отменить все ожидающие работы.

1 Ответ

0 голосов
/ 10 ноября 2018

Таким образом, получается, что вы можете либо наследовать ViewModel / AppComptActivity и т. Д. От CoroutineScope. Или вы можете использовать композицию так:

`` `

private val pendingJobs = Job()
private val coroutineScope = CoroutineScope(contextProvider.io + pendingJobs)

...
...

    coroutineScope.launch  {

    withContext(contextProvider.UI) {

    }
    }

`` `

Затем в соответствующем методе уничтожения вызовите pendingJobs.cancel() для завершения отложенных заданий.

...