From a535a0ced2ab655603edc8aaac283cc3f601889c Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Sat, 20 Jan 2024 12:52:53 +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/ui/main/MainViewModel.kt | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt b/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt index af19338b0..3649e6e42 100644 --- a/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/main/MainViewModel.kt @@ -31,6 +31,7 @@ import kotlinx.coroutines.asCoroutineDispatcher import kotlinx.coroutines.delay import kotlinx.coroutines.isActive import kotlinx.coroutines.launch +import java.util.LinkedList import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.Executors import kotlin.math.min @@ -39,7 +40,7 @@ class MainViewModel(application: Application) : BaseViewModel(application) { private var threadCount = AppConfig.threadCount private var upTocPool = Executors.newFixedThreadPool(min(threadCount, AppConst.MAX_THREAD)).asCoroutineDispatcher() - private val waitUpTocBooks = arrayListOf() + private val waitUpTocBooks = LinkedList() private val onUpTocBooks = ConcurrentHashMap.newKeySet() val onUpBooksLiveData = MutableLiveData() private var upTocJob: Job? = null @@ -113,15 +114,13 @@ class MainViewModel(application: Application) : BaseViewModel(application) { @Synchronized private fun updateToc() { - val bookUrl = waitUpTocBooks.firstOrNull() ?: return + val bookUrl = waitUpTocBooks.poll() ?: return if (onUpTocBooks.contains(bookUrl)) { - waitUpTocBooks.remove(bookUrl) postUpBooksLiveData() return } val book = appDb.bookDao.getBook(bookUrl) if (book == null) { - waitUpTocBooks.remove(bookUrl) postUpBooksLiveData() return } @@ -131,11 +130,9 @@ class MainViewModel(application: Application) : BaseViewModel(application) { book.addType(BookType.updateError) appDb.bookDao.update(book) } - waitUpTocBooks.remove(book.bookUrl) postUpBooksLiveData() return } - waitUpTocBooks.remove(bookUrl) upTocAdd(bookUrl) execute(context = upTocPool, executeContext = upTocPool) { kotlin.runCatching { @@ -202,7 +199,6 @@ class MainViewModel(application: Application) : BaseViewModel(application) { @Synchronized private fun upTocFinally(bookUrl: String) { - waitUpTocBooks.remove(bookUrl) onUpTocBooks.remove(bookUrl) postEvent(EventBus.UP_BOOKSHELF, bookUrl) if (waitUpTocBooks.isEmpty()