Отменить задание, которое запускает сопрограмму, и повторно использовать объект задания

В настоящее время у меня есть работа, которая выполняет какой-то процесс (это немного интенсивно, занимает около 10 секунд)

Но я хотел бы немедленно отменить его, когда придет следующий вызов executeProcess ().

private var myJob: Job? = null

fun executeProcess() {
    myJob?.cancel()
    myJob = scope.launch(Dispatchers.IO) {
        //doCPUIntensiveTask()
        //This is always Active!
        println("isActive $isActive ")
    }
}

Как это возможно, если я хочу повторно использовать один и тот же объект задания? если это невозможно, есть ли альтернативное решение?


person Kenenisa Bekele    schedule 18.08.2020    source источник
comment
Что вы подразумеваете под повторным использованием объекта задания? launch порождает новую работу, и вы заменяете ее новой, вы все делаете правильно, так в чем конкретно ваша проблема?   -  person Pawel    schedule 18.08.2020
comment
Непонятно, чего вы пытаетесь достичь. Кстати, вы не должны запускать задачи с интенсивным использованием ЦП на Dispatchers.IO, лучше используйте для этого Dispatchers.Main.   -  person xap4o    schedule 18.08.2020
comment
@ xap4o Я думаю, вы что-то перепутали, Dispatchers.Main запускается в потоке пользовательского интерфейса, поэтому IO или Default верны   -  person Pawel    schedule 18.08.2020


Ответы (1)


person Petrus Nguyễn Thái Học    schedule 18.08.2020