Horis 1 год назад
Родитель
Сommit
00eb98450c
1 измененных файлов с 6 добавлено и 8 удалено
  1. 6 8
      app/src/main/java/io/legado/app/help/coroutine/Coroutine.kt

+ 6 - 8
app/src/main/java/io/legado/app/help/coroutine/Coroutine.kt

@@ -130,6 +130,11 @@ class Coroutine<T>(
         block: suspend CoroutineScope.() -> Unit
         block: suspend CoroutineScope.() -> Unit
     ): Coroutine<T> {
     ): Coroutine<T> {
         this.cancel = VoidCallback(context, block)
         this.cancel = VoidCallback(context, block)
+        job.invokeOnCompletion {
+            if (it is CancellationException && it !is ActivelyCancelException) {
+                cancel()
+            }
+        }
         return this@Coroutine
         return this@Coroutine
     }
     }
 
 
@@ -156,11 +161,7 @@ class Coroutine<T>(
     }
     }
 
 
     fun start() {
     fun start() {
-        if (startOption === CoroutineStart.LAZY && isCancelled) {
-            cancel()
-        } else {
-            job.start()
-        }
+        job.start()
     }
     }
 
 
     private fun executeInternal(
     private fun executeInternal(
@@ -176,9 +177,6 @@ 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 && e !is ActivelyCancelException && isCancelled) {
-                    this@Coroutine.cancel()
-                }
                 val consume: Boolean = errorReturn?.value?.let { value ->
                 val consume: Boolean = errorReturn?.value?.let { value ->
                     success?.let { dispatchCallback(this, value, it) }
                     success?.let { dispatchCallback(this, value, it) }
                     true
                     true