Avoid unnecessary thread create

This commit is contained in:
tarsin committed 2023-01-30 10:46:23 +08:00
1 parent 300fabca21
commit 7d00e01e00
2 files changed
+31 -13

No files matched your search

@@ -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();
@@ -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()
}
}
}