From 7d00e01e0029bc6b27d560ae54f7436a9a6e5c2f Mon Sep 17 00:00:00 2001 From: tarsin Date: Mon, 30 Jan 2023 10:46:23 +0800 Subject: [PATCH] Avoid unnecessary thread create --- .../hippo/ehviewer/spider/SpiderQueen.java | 19 ++++++++++++++ .../ehviewer/ui/scene/GalleryDetailScene.kt | 25 +++++++++---------- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java index 227744ddc..5015b7dbb 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java @@ -652,6 +652,25 @@ public final class SpiderQueen implements Runnable { } } + // Mark as suspend fun when kotlinize, need IO + public static int getStartPage(long gid) { + var queen = sQueenMap.get(gid); + SpiderInfo spiderInfo = null; + + // Fast Path: read existing queen + if (queen != null) { + spiderInfo = queen.mSpiderInfo.get(); + } + + // Slow path, read diskcache + if (spiderInfo == null) { + spiderInfo = SpiderInfo.readFromCache(gid); + } + + if (spiderInfo == null) return 0; + return spiderInfo.getStartPage(); + } + public int getStartPage() { SpiderInfo spiderInfo = mSpiderInfo.get(); if (spiderInfo == null) spiderInfo = readSpiderInfoFromLocal(); diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt index 63640e912..a353fb9ad 100755 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt @@ -86,9 +86,8 @@ import com.hippo.ehviewer.dao.DownloadInfo import com.hippo.ehviewer.dao.Filter import com.hippo.ehviewer.databinding.SceneGalleryDetailBinding import com.hippo.ehviewer.download.DownloadManager.DownloadInfoListener -import com.hippo.ehviewer.gallery.EhPageLoader -import com.hippo.ehviewer.gallery.PageLoader2 import com.hippo.ehviewer.spider.SpiderDen +import com.hippo.ehviewer.spider.SpiderQueen import com.hippo.ehviewer.ui.CommonOperations import com.hippo.ehviewer.ui.GalleryInfoBottomSheet import com.hippo.ehviewer.ui.MainActivity @@ -260,19 +259,19 @@ class GalleryDetailScene : CollapsingToolbarScene(), View.OnClickListener, Downl override fun onResume() { super.onResume() _binding ?: return - val galleryProvider: PageLoader2 = EhPageLoader(mGalleryInfo) - galleryProvider.start() - viewLifecycleOwner.lifecycleScope.launchIO { - runCatching { - val startPage = galleryProvider.startPage - if (startPage != 0) { - withUIContext { - binding.content.header.read.text = getString(R.string.read_from, startPage + 1) + mGalleryInfo?.let { + viewLifecycleOwner.lifecycleScope.launchIO { + runCatching { + val startPage = SpiderQueen.getStartPage(it.gid) + if (startPage != 0) { + withUIContext { + binding.content.header.read.text = + getString(R.string.read_from, startPage + 1) + } } + }.onFailure { + it.printStackTrace() } - galleryProvider.stop() - }.onFailure { - it.printStackTrace() } } }