From 3d0443079808cf354430c102ef0d42713e163893 Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Wed, 2 Aug 2023 21:44:03 +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 --- .../legado/app/model/webBook/SearchModel.kt | 36 ++++++++++--------- .../app/ui/book/search/SearchActivity.kt | 6 ++-- .../legado/app/ui/book/search/SearchScope.kt | 4 +-- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/webBook/SearchModel.kt b/app/src/main/java/io/legado/app/model/webBook/SearchModel.kt index fd37c76e7..8d1375523 100644 --- a/app/src/main/java/io/legado/app/model/webBook/SearchModel.kt +++ b/app/src/main/java/io/legado/app/model/webBook/SearchModel.kt @@ -13,6 +13,7 @@ import io.legado.app.utils.getPrefBoolean import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExecutorCoroutineDispatcher import kotlinx.coroutines.asCoroutineDispatcher +import kotlinx.coroutines.ensureActive import kotlinx.coroutines.isActive import splitties.init.appCtx import java.util.concurrent.Executors @@ -76,23 +77,24 @@ class SearchModel(private val scope: CoroutineScope, private val callBack: CallB } searchIndex++ val source = bookSourceList[searchIndex] - searchPool?.let { searchPool -> - val task = WebBook.searchBook( - scope, - source, - searchKey, - searchPage, - context = searchPool, - executeContext = searchPool - ).timeout(30000L) - .onSuccess { - onSuccess(searchId, it) - } - .onFinally { - onFinally(searchId) - } - tasks.add(task) - } + val searchPool = searchPool ?: return + val task = WebBook.searchBook( + scope, + source, + searchKey, + searchPage, + context = searchPool, + executeContext = searchPool + ).timeout(30000L) + .onSuccess { + ensureActive() + onSuccess(searchId, it) + } + .onFinally { + ensureActive() + onFinally(searchId) + } + tasks.add(task) } @Synchronized diff --git a/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt b/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt index 89ceb826e..6ac56c912 100644 --- a/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt @@ -282,16 +282,14 @@ class SearchActivity : VMBaseActivity(androidx.appcompat.R.id.search_src_text) .requestFocus() } else { - searchView.post { - searchView.setQuery(key, true) - } + searchView.setQuery(key, true) } } diff --git a/app/src/main/java/io/legado/app/ui/book/search/SearchScope.kt b/app/src/main/java/io/legado/app/ui/book/search/SearchScope.kt index 6686c8ab6..20d6f8581 100644 --- a/app/src/main/java/io/legado/app/ui/book/search/SearchScope.kt +++ b/app/src/main/java/io/legado/app/ui/book/search/SearchScope.kt @@ -31,9 +31,9 @@ data class SearchScope(private var scope: String) { val stateLiveData = MutableLiveData(scope) - fun update(scope: String) { + fun update(scope: String, postValue: Boolean = true) { this.scope = scope - stateLiveData.postValue(scope) + if (postValue) stateLiveData.postValue(scope) save() }