From 38cecec4ad7882f877fd7bdf297c8b92e30cdfc0 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Fri, 20 Sep 2024 18:07:52 +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 --- app/src/main/java/io/legado/app/help/book/BookHelp.kt | 5 +++-- app/src/main/java/io/legado/app/model/CacheBook.kt | 2 +- .../app/ui/book/read/page/provider/TextChapterLayout.kt | 9 ++++++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/book/BookHelp.kt b/app/src/main/java/io/legado/app/help/book/BookHelp.kt index 32c68db83..896e78b6c 100644 --- a/app/src/main/java/io/legado/app/help/book/BookHelp.kt +++ b/app/src/main/java/io/legado/app/help/book/BookHelp.kt @@ -154,7 +154,8 @@ object BookHelp { bookSource: BookSource, book: Book, bookChapter: BookChapter, - content: String + content: String, + concurrency: Int = AppConfig.threadCount ) = coroutineScope { flow { val matcher = AppPattern.imgPattern.matcher(content) @@ -163,7 +164,7 @@ object BookHelp { val mSrc = NetworkUtils.getAbsoluteURL(bookChapter.url, src) emit(mSrc) } - }.onEachParallel(AppConfig.threadCount) { mSrc -> + }.onEachParallel(concurrency) { mSrc -> saveImage(bookSource, book, mSrc, bookChapter) }.collect() } 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 b7b1a3030..32d33970f 100644 --- a/app/src/main/java/io/legado/app/model/CacheBook.kt +++ b/app/src/main/java/io/legado/app/model/CacheBook.kt @@ -269,7 +269,7 @@ object CacheBook { if (BookHelp.hasContent(book, chapter)) { Coroutine.async(executeContext = context) { BookHelp.getContent(book, chapter)?.let { - BookHelp.saveImages(bookSource, book, chapter, it) + BookHelp.saveImages(bookSource, book, chapter, it, 1) } }.onSuccess { onSuccess(chapter) diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt b/app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt index f4b9d1ee4..b01201611 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/provider/TextChapterLayout.kt @@ -27,6 +27,8 @@ import io.legado.app.utils.fastSum import io.legado.app.utils.splitNotBlank import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.CoroutineStart +import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.ensureActive import kotlinx.coroutines.launch @@ -83,7 +85,11 @@ class TextChapterLayout( var channel = Channel(Int.MAX_VALUE) init { - job = Coroutine.async(scope) { + job = Coroutine.async( + scope, + start = CoroutineStart.LAZY, + executeContext = IO + ) { launch { val bookSource = book.getBookSource() ?: return@launch BookHelp.saveImages(bookSource, book, bookChapter, bookContent.toString()) @@ -95,6 +101,7 @@ class TextChapterLayout( }.onFinally { isCompleted = true } + job.start() } fun setProgressListener(l: LayoutProgressListener?) {