From 5afedc4985d9adc3fd17386d8e8a88768efe471c Mon Sep 17 00:00:00 2001 From: kunfei Date: Tue, 1 Aug 2023 09:27:55 +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/base/BaseFragment.kt | 11 +---------- .../io/legado/app/ui/book/toc/BookmarkFragment.kt | 3 ++- .../io/legado/app/ui/book/toc/ChapterListFragment.kt | 11 ++++++----- .../ui/main/bookshelf/style1/books/BooksFragment.kt | 5 +++-- .../ui/main/bookshelf/style2/BookshelfFragment2.kt | 3 ++- .../io/legado/app/ui/main/explore/ExploreFragment.kt | 4 ++-- .../java/io/legado/app/ui/main/rss/RssFragment.kt | 6 ++++-- 7 files changed, 20 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/io/legado/app/base/BaseFragment.kt b/app/src/main/java/io/legado/app/base/BaseFragment.kt index 8125831a3..7e54012b6 100644 --- a/app/src/main/java/io/legado/app/base/BaseFragment.kt +++ b/app/src/main/java/io/legado/app/base/BaseFragment.kt @@ -14,13 +14,9 @@ import androidx.fragment.app.Fragment import io.legado.app.R import io.legado.app.ui.widget.TitleBar import io.legado.app.utils.applyTint -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.cancel @Suppress("MemberVisibilityCanBePrivate") -abstract class BaseFragment(@LayoutRes layoutID: Int) : Fragment(layoutID), - CoroutineScope by MainScope() { +abstract class BaseFragment(@LayoutRes layoutID: Int) : Fragment(layoutID) { var supportToolbar: Toolbar? = null private set @@ -55,11 +51,6 @@ abstract class BaseFragment(@LayoutRes layoutID: Int) : Fragment(layoutID), } } - override fun onDestroy() { - super.onDestroy() - cancel() - } - fun setSupportToolbar(toolbar: Toolbar) { supportToolbar = toolbar supportToolbar?.let { diff --git a/app/src/main/java/io/legado/app/ui/book/toc/BookmarkFragment.kt b/app/src/main/java/io/legado/app/ui/book/toc/BookmarkFragment.kt index 2a7b6e5ae..c023a4676 100644 --- a/app/src/main/java/io/legado/app/ui/book/toc/BookmarkFragment.kt +++ b/app/src/main/java/io/legado/app/ui/book/toc/BookmarkFragment.kt @@ -5,6 +5,7 @@ import android.content.Intent import android.os.Bundle import android.view.View import androidx.fragment.app.activityViewModels +import androidx.lifecycle.lifecycleScope import io.legado.app.R import io.legado.app.base.VMBaseFragment import io.legado.app.data.appDb @@ -49,7 +50,7 @@ class BookmarkFragment : VMBaseFragment(R.layout.fragment_bookmark override fun upBookmark(searchKey: String?) { val book = viewModel.bookData.value ?: return - launch { + lifecycleScope.launch { when { searchKey.isNullOrBlank() -> appDb.bookmarkDao.flowByBook(book.name, book.author) else -> appDb.bookmarkDao.flowSearch(book.name, book.author, searchKey) diff --git a/app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt b/app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt index d3f735664..2f76982c3 100644 --- a/app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt +++ b/app/src/main/java/io/legado/app/ui/book/toc/ChapterListFragment.kt @@ -7,6 +7,7 @@ import android.graphics.PorterDuff import android.os.Bundle import android.view.View import androidx.fragment.app.activityViewModels +import androidx.lifecycle.lifecycleScope import io.legado.app.R import io.legado.app.base.VMBaseFragment import io.legado.app.constant.EventBus @@ -76,7 +77,7 @@ class ChapterListFragment : VMBaseFragment(R.layout.fragment_chapt @SuppressLint("SetTextI18n") private fun initBook(book: Book) { - launch { + lifecycleScope.launch { upChapterList(null) durChapterIndex = book.durChapterIndex binding.tvCurrentChapterInfo.text = @@ -86,7 +87,7 @@ class ChapterListFragment : VMBaseFragment(R.layout.fragment_chapt } private fun initCacheFileNames(book: Book) { - launch(IO) { + lifecycleScope.launch(IO) { adapter.cacheFileNames.addAll(BookHelp.getChapterFiles(book)) withContext(Main) { adapter.notifyItemRangeChanged(0, adapter.itemCount, true) @@ -114,7 +115,7 @@ class ChapterListFragment : VMBaseFragment(R.layout.fragment_chapt } override fun upChapterList(searchKey: String?) { - launch { + lifecycleScope.launch { withContext(IO) { when { searchKey.isNullOrBlank() -> appDb.bookChapterDao.getChapterList(viewModel.bookUrl) @@ -127,7 +128,7 @@ class ChapterListFragment : VMBaseFragment(R.layout.fragment_chapt } override fun onListChanged() { - launch { + lifecycleScope.launch { var scrollPos = 0 withContext(Default) { adapter.getItems().forEachIndexed { index, bookChapter -> @@ -148,7 +149,7 @@ class ChapterListFragment : VMBaseFragment(R.layout.fragment_chapt } override val scope: CoroutineScope - get() = this + get() = lifecycleScope override val book: Book? get() = viewModel.bookData.value diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt index ea90f1edf..e77888abd 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/style1/books/BooksFragment.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import androidx.core.view.isGone import androidx.fragment.app.activityViewModels +import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -133,7 +134,7 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), */ private fun upRecyclerData() { booksFlowJob?.cancel() - booksFlowJob = launch { + booksFlowJob = lifecycleScope.launch { appDb.bookDao.flowByGroup(groupId).map { list -> //排序 when (bookSort) { @@ -192,7 +193,7 @@ class BooksFragment() : BaseFragment(R.layout.fragment_books), if (!AppConfig.showLastUpdateTime) { return } - upLastUpdateTimeJob = launch { + upLastUpdateTimeJob = lifecycleScope.launch { while (isActive) { if (SystemUtils.isScreenOn()) { booksAdapter.upLastUpdateTime() diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt index 5773c9bad..38fcf7c3b 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/style2/BookshelfFragment2.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import androidx.appcompat.widget.SearchView import androidx.core.view.isGone +import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -133,7 +134,7 @@ class BookshelfFragment2() : BaseBookshelfFragment(R.layout.fragment_bookshelf2) } } booksFlowJob?.cancel() - booksFlowJob = launch { + booksFlowJob = lifecycleScope.launch { appDb.bookDao.flowByGroup(groupId).map { list -> //排序 when (AppConfig.getBookSortByGroupId(groupId)) { diff --git a/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt b/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt index 1358938f2..19d7592a1 100644 --- a/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt @@ -129,7 +129,7 @@ class ExploreFragment() : VMBaseFragment(R.layout.fragment_exp } private fun initGroupData() { - launch { + lifecycleScope.launch { appDb.bookSourceDao.flowExploreGroups().flowOn(IO).conflate().collect { groups.clear() groups.addAll(it) @@ -141,7 +141,7 @@ class ExploreFragment() : VMBaseFragment(R.layout.fragment_exp private fun upExploreData(searchKey: String? = null, once: Boolean = false) { this.searchKey = searchKey exploreFlowJob?.cancel() - exploreFlowJob = launch { + exploreFlowJob = lifecycleScope.launch { when { searchKey.isNullOrBlank() -> { appDb.bookSourceDao.flowExplore() diff --git a/app/src/main/java/io/legado/app/ui/main/rss/RssFragment.kt b/app/src/main/java/io/legado/app/ui/main/rss/RssFragment.kt index 38268f2ae..da6f580e6 100644 --- a/app/src/main/java/io/legado/app/ui/main/rss/RssFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/rss/RssFragment.kt @@ -7,6 +7,7 @@ import android.view.SubMenu import android.view.View import androidx.appcompat.widget.SearchView import androidx.fragment.app.viewModels +import androidx.lifecycle.lifecycleScope import io.legado.app.R import io.legado.app.base.VMBaseFragment import io.legado.app.constant.AppLog @@ -139,7 +140,7 @@ class RssFragment() : VMBaseFragment(R.layout.fragment_rss), private fun initGroupData() { groupsFlowJob?.cancel() - groupsFlowJob = launch { + groupsFlowJob = lifecycleScope.launch { appDb.rssSourceDao.flowGroupEnabled().conflate().collect { groups.clear() it.map { group -> @@ -152,13 +153,14 @@ class RssFragment() : VMBaseFragment(R.layout.fragment_rss), private fun upRssFlowJob(searchKey: String? = null) { rssFlowJob?.cancel() - rssFlowJob = launch { + rssFlowJob = lifecycleScope.launch { when { searchKey.isNullOrEmpty() -> appDb.rssSourceDao.flowEnabled() searchKey.startsWith("group:") -> { val key = searchKey.substringAfter("group:") appDb.rssSourceDao.flowEnabledByGroup(key) } + else -> appDb.rssSourceDao.flowEnabled(searchKey) }.catch { AppLog.put("订阅界面更新数据出错", it)