From 801d2bf52be3e8d4bf759e165ff2556af67197f7 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Sun, 1 Jun 2025 18:37:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/model/CacheBook.kt | 17 ++++++++++------- .../io/legado/app/service/CacheBookService.kt | 1 - 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/CacheBook.kt b/app/src/main/java/io/legado/app/model/CacheBook.kt index 4c2378c0b..c5f8f9407 100644 --- a/app/src/main/java/io/legado/app/model/CacheBook.kt +++ b/app/src/main/java/io/legado/app/model/CacheBook.kt @@ -11,6 +11,7 @@ import io.legado.app.data.entities.BookSource import io.legado.app.exception.ConcurrentException import io.legado.app.help.book.BookHelp import io.legado.app.help.book.isLocal +import io.legado.app.help.coroutine.CompositeCoroutine import io.legado.app.help.coroutine.Coroutine import io.legado.app.model.webBook.WebBook import io.legado.app.service.CacheBookService @@ -96,15 +97,11 @@ object CacheBook { } } - fun clear() { - successDownloadSet.clear() - errorDownloadMap.clear() - } - fun close() { cacheBookMap.forEach { it.value.stop() } cacheBookMap.clear() - clear() + successDownloadSet.clear() + errorDownloadMap.clear() } val downloadSummary: String @@ -146,6 +143,7 @@ object CacheBook { private val waitDownloadSet = linkedSetOf() private val onDownloadSet = linkedSetOf() + private val tasks = CompositeCoroutine() private var isStopped = false private var waitingRetry = false @@ -158,7 +156,7 @@ object CacheBook { @Synchronized fun isRun(): Boolean { - return waitDownloadSet.size > 0 || onDownloadSet.size > 0 + return waitDownloadSet.isNotEmpty() || onDownloadSet.isNotEmpty() } @Synchronized @@ -169,6 +167,7 @@ object CacheBook { @Synchronized fun stop() { waitDownloadSet.clear() + tasks.clear() isStopped = true postEvent(EventBus.UP_DOWNLOAD, book.bookUrl) } @@ -285,6 +284,8 @@ object CacheBook { onCancel(chapterIndex) }.onFinally { onFinally() + }.let { + tasks.add(it) } return } @@ -309,6 +310,8 @@ object CacheBook { onCancel(chapterIndex) }.onFinally { onFinally() + }.apply { + tasks.add(this) }.start() } diff --git a/app/src/main/java/io/legado/app/service/CacheBookService.kt b/app/src/main/java/io/legado/app/service/CacheBookService.kt index 588431a8f..f45ae634c 100644 --- a/app/src/main/java/io/legado/app/service/CacheBookService.kt +++ b/app/src/main/java/io/legado/app/service/CacheBookService.kt @@ -65,7 +65,6 @@ class CacheBookService : BaseService() { override fun onCreate() { super.onCreate() isRun = true - CacheBook.clear() lifecycleScope.launch { while (isActive) { delay(1000)