pull/2102/head
kunfei 2 years ago
parent 37a057b2c6
commit 04eaa29052
  1. 5
      app/src/main/java/io/legado/app/help/coroutine/ActivelyCancelException.kt
  2. 7
      app/src/main/java/io/legado/app/help/coroutine/Coroutine.kt

@ -0,0 +1,5 @@
package io.legado.app.help.coroutine
import kotlin.coroutines.cancellation.CancellationException
class ActivelyCancelException : CancellationException()

@ -40,8 +40,6 @@ class Coroutine<T>(
private var timeMillis: Long? = null private var timeMillis: Long? = null
private var errorReturn: Result<T>? = null private var errorReturn: Result<T>? = null
private var isCancelCalled = false
val isCancelled: Boolean val isCancelled: Boolean
get() = job.isCancelled get() = job.isCancelled
@ -116,8 +114,7 @@ class Coroutine<T>(
} }
//取消当前任务 //取消当前任务
fun cancel(cause: CancellationException? = null) { fun cancel(cause: ActivelyCancelException = ActivelyCancelException()) {
isCancelCalled = true
job.cancel(cause) job.cancel(cause)
cancel?.let { cancel?.let {
MainScope().launch { MainScope().launch {
@ -149,7 +146,7 @@ class Coroutine<T>(
success?.let { dispatchCallback(this, value, it) } success?.let { dispatchCallback(this, value, it) }
} catch (e: Throwable) { } catch (e: Throwable) {
e.printOnDebug() e.printOnDebug()
if (e is CancellationException && !isCancelCalled) this@Coroutine.cancel() if (e is ActivelyCancelException) this@Coroutine.cancel()
if (e is CancellationException && e !is TimeoutCancellationException) { if (e is CancellationException && e !is TimeoutCancellationException) {
return@launch return@launch
} }

Loading…
Cancel
Save