Skip to content

Kotlin Coroutine is not cancelled #2

Open
@JkMulti

Description

@JkMulti

Hi, first of all a very big thanks for async task alternative. The code has one exception, it is not cancelling the coroutine/job when cancel is called.
fun cancel(mayInterruptIfRunning: Boolean) {
if (preJob == null || bgJob == null) {
printLog("$taskName has already been cancelled/finished/not yet started.")
return
}
if (mayInterruptIfRunning || (!preJob!!.isActive && !bgJob!!.isActive)) {
isCancelled = true
status = Status.FINISHED
if (bgJob!!.isCompleted) {
GlobalScope.launch(Dispatchers.Main) {
onCancelled(bgJob!!.await())
}
}
preJob?.cancel(CancellationException("PreExecute: Coroutine Task cancelled"))
bgJob?.cancel(CancellationException("doInBackground: Coroutine Task cancelled"))

        if (bgJob!!.isCancelled) {
            printLog("Bg JOB has been cancelled.")
        }
        printLog("$taskName has been cancelled.")
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions