kunfei 4 лет назад
Родитель
Сommit
6b07f6974b

+ 23 - 29
app/src/main/java/io/legado/app/base/adapter/DiffRecyclerAdapter.kt

@@ -74,45 +74,39 @@ abstract class DiffRecyclerAdapter<ITEM, VB : ViewBinding>(protected val context
         }
     }
 
-    suspend fun updateItem(item: ITEM) {
-        withContext(Dispatchers.Main) {
-            synchronized(asyncListDiffer) {
-                kotlin.runCatching {
-                    val index = asyncListDiffer.currentList.indexOf(item)
-                    if (index >= 0) {
-                        asyncListDiffer.currentList[index] = item
-                        notifyItemChanged(index)
-                    }
+    fun updateItem(item: ITEM) {
+        synchronized(asyncListDiffer) {
+            kotlin.runCatching {
+                val index = asyncListDiffer.currentList.indexOf(item)
+                if (index >= 0) {
+                    asyncListDiffer.currentList[index] = item
+                    notifyItemChanged(index)
                 }
             }
         }
     }
 
-    suspend fun updateItem(position: Int, payload: Any) {
-        withContext(Dispatchers.Main) {
-            synchronized(asyncListDiffer) {
-                kotlin.runCatching {
-                    val size = itemCount
-                    if (position in 0 until size) {
-                        notifyItemChanged(position, payload)
-                    }
+    fun updateItem(position: Int, payload: Any) {
+        synchronized(asyncListDiffer) {
+            kotlin.runCatching {
+                val size = itemCount
+                if (position in 0 until size) {
+                    notifyItemChanged(position, payload)
                 }
             }
         }
     }
 
-    suspend fun updateItems(fromPosition: Int, toPosition: Int, payloads: Any) {
-        withContext(Dispatchers.Main) {
-            synchronized(asyncListDiffer) {
-                kotlin.runCatching {
-                    val size = itemCount
-                    if (fromPosition in 0 until size && toPosition in 0 until size) {
-                        notifyItemRangeChanged(
-                            fromPosition,
-                            toPosition - fromPosition + 1,
-                            payloads
-                        )
-                    }
+    fun updateItems(fromPosition: Int, toPosition: Int, payloads: Any) {
+        synchronized(asyncListDiffer) {
+            kotlin.runCatching {
+                val size = itemCount
+                if (fromPosition in 0 until size && toPosition in 0 until size) {
+                    notifyItemRangeChanged(
+                        fromPosition,
+                        toPosition - fromPosition + 1,
+                        payloads
+                    )
                 }
             }
         }

+ 1 - 2
app/src/main/java/io/legado/app/ui/book/changecover/ChangeCoverDialog.kt

@@ -15,7 +15,6 @@ import io.legado.app.lib.theme.primaryColor
 import io.legado.app.utils.applyTint
 import io.legado.app.utils.setLayout
 import io.legado.app.utils.viewbindingdelegate.viewBinding
-import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.conflate
 import kotlinx.coroutines.launch
@@ -68,7 +67,7 @@ class ChangeCoverDialog() : BaseDialogFragment(R.layout.dialog_change_cover),
     }
 
     private fun initData() {
-        launch(Dispatchers.Default) {
+        launch {
             whenStarted {
                 viewModel.dataFlow.conflate().collect {
                     adapter.setItems(it)

+ 1 - 2
app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceDialog.kt

@@ -29,7 +29,6 @@ import io.legado.app.ui.book.source.manage.BookSourceActivity
 import io.legado.app.ui.widget.recycler.VerticalDivider
 import io.legado.app.utils.*
 import io.legado.app.utils.viewbindingdelegate.viewBinding
-import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.conflate
 import kotlinx.coroutines.launch
@@ -146,7 +145,7 @@ class ChangeBookSourceDialog() : BaseDialogFragment(R.layout.dialog_book_change_
             }
             binding.toolBar.menu.applyTint(requireContext())
         }
-        launch(Dispatchers.Default) {
+        launch {
             whenStarted {
                 viewModel.searchDataFlow.conflate().collect {
                     adapter.setItems(it)

+ 1 - 2
app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceDialog.kt

@@ -31,7 +31,6 @@ import io.legado.app.ui.book.source.manage.BookSourceActivity
 import io.legado.app.ui.widget.recycler.VerticalDivider
 import io.legado.app.utils.*
 import io.legado.app.utils.viewbindingdelegate.viewBinding
-import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.conflate
 import kotlinx.coroutines.launch
@@ -178,7 +177,7 @@ class ChangeChapterSourceDialog() : BaseDialogFragment(R.layout.dialog_chapter_c
             }
             binding.toolBar.menu.applyTint(requireContext())
         }
-        launch(Dispatchers.Default) {
+        launch {
             whenStarted {
                 viewModel.searchDataFlow.conflate().collect {
                     searchBookAdapter.setItems(it)

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

@@ -29,7 +29,6 @@ import io.legado.app.ui.book.source.manage.BookSourceActivity
 import io.legado.app.ui.widget.recycler.LoadMoreView
 import io.legado.app.utils.*
 import io.legado.app.utils.viewbindingdelegate.viewBinding
-import kotlinx.coroutines.Dispatchers.Default
 import kotlinx.coroutines.Dispatchers.IO
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.delay
@@ -199,7 +198,7 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
     }
 
     private fun initData() {
-        lifecycleScope.launch(Default) {
+        lifecycleScope.launch {
             whenStarted {
                 viewModel.searchDataFlow.conflate().collect {
                     adapter.setItems(it)

+ 3 - 2
app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt

@@ -28,6 +28,7 @@ import kotlinx.coroutines.Job
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.conflate
+import kotlinx.coroutines.flow.flowOn
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.launch
 import kotlin.math.max
@@ -104,7 +105,7 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books),
 
     private fun upRecyclerData() {
         booksFlowJob?.cancel()
-        booksFlowJob = launch(Dispatchers.Default) {
+        booksFlowJob = launch {
             when (groupId) {
                 AppConst.bookGroupAllId -> appDb.bookDao.flowAll()
                 AppConst.bookGroupLocalId -> appDb.bookDao.flowLocal()
@@ -120,7 +121,7 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books),
                     3 -> list.sortedBy { it.order }
                     else -> list.sortedByDescending { it.durChapterTime }
                 }
-            }.catch {
+            }.flowOn(Dispatchers.Default).catch {
                 AppLog.put("书架更新出错", it)
             }.conflate().collect { list ->
                 binding.tvEmptyMsg.isGone = list.isNotEmpty()