Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

kunfei 3 лет назад
Родитель
Сommit
6aa5d64516

+ 19 - 17
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.CoroutineScope
 import kotlinx.coroutines.ExecutorCoroutineDispatcher
 import kotlinx.coroutines.ExecutorCoroutineDispatcher
 import kotlinx.coroutines.asCoroutineDispatcher
 import kotlinx.coroutines.asCoroutineDispatcher
+import kotlinx.coroutines.ensureActive
 import kotlinx.coroutines.isActive
 import kotlinx.coroutines.isActive
 import splitties.init.appCtx
 import splitties.init.appCtx
 import java.util.concurrent.Executors
 import java.util.concurrent.Executors
@@ -76,23 +77,24 @@ class SearchModel(private val scope: CoroutineScope, private val callBack: CallB
         }
         }
         searchIndex++
         searchIndex++
         val source = bookSourceList[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
     @Synchronized

+ 2 - 4
app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt

@@ -282,16 +282,14 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
     private fun receiptIntent(intent: Intent? = null) {
     private fun receiptIntent(intent: Intent? = null) {
         val searchScope = intent?.getStringExtra("searchScope")
         val searchScope = intent?.getStringExtra("searchScope")
         searchScope?.let {
         searchScope?.let {
-            viewModel.searchScope.update(searchScope)
+            viewModel.searchScope.update(searchScope, false)
         }
         }
         val key = intent?.getStringExtra("key")
         val key = intent?.getStringExtra("key")
         if (key.isNullOrBlank()) {
         if (key.isNullOrBlank()) {
             searchView.findViewById<TextView>(androidx.appcompat.R.id.search_src_text)
             searchView.findViewById<TextView>(androidx.appcompat.R.id.search_src_text)
                 .requestFocus()
                 .requestFocus()
         } else {
         } else {
-            searchView.post {
-                searchView.setQuery(key, true)
-            }
+            searchView.setQuery(key, true)
         }
         }
     }
     }
 
 

+ 2 - 2
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)
     val stateLiveData = MutableLiveData(scope)
 
 
-    fun update(scope: String) {
+    fun update(scope: String, postValue: Boolean = true) {
         this.scope = scope
         this.scope = scope
-        stateLiveData.postValue(scope)
+        if (postValue) stateLiveData.postValue(scope)
         save()
         save()
     }
     }