Preheat SpiderQueen in GalleryDetailScene, Resolve #818
This commit is contained in:
1 parent
c64167c76a
commit
0b6676aaa3
2 files changed
+11
-17
No files matched your search
@@ -239,6 +239,11 @@ class SpiderQueen private constructor(val galleryInfo: GalleryInfo) : CoroutineS
|
||||
notifyGetPages(mSpiderInfo.pages)
|
||||
}
|
||||
|
||||
suspend fun awaitStartPage(): Int {
|
||||
prepareJob.join()
|
||||
return mSpiderInfo.startPage
|
||||
}
|
||||
|
||||
private fun stop() {
|
||||
launchNonCancellable { writeSpiderInfoToLocal() }
|
||||
cancel()
|
||||
@@ -516,22 +521,6 @@ class SpiderQueen private constructor(val galleryInfo: GalleryInfo) : CoroutineS
|
||||
sQueenMap.remove(queen.galleryInfo.gid)
|
||||
}
|
||||
}
|
||||
|
||||
fun getStartPage(gid: Long): Int {
|
||||
val queen = sQueenMap[gid]
|
||||
var spiderInfo: SpiderInfo? = null
|
||||
|
||||
// Fast Path: read existing queen
|
||||
if (queen != null) {
|
||||
spiderInfo = queen.mSpiderInfo
|
||||
}
|
||||
|
||||
// Slow path, read diskcache
|
||||
if (spiderInfo == null) {
|
||||
spiderInfo = readFromCache(gid)
|
||||
}
|
||||
return spiderInfo?.startPage ?: 0
|
||||
}
|
||||
}
|
||||
|
||||
override val coroutineContext: CoroutineContext
|
||||
|
||||
@@ -264,7 +264,7 @@ class GalleryDetailScene : CollapsingToolbarScene(), View.OnClickListener, Downl
|
||||
mGalleryInfo?.let {
|
||||
viewLifecycleOwner.lifecycleScope.launchIO {
|
||||
runCatching {
|
||||
val startPage = SpiderQueen.getStartPage(it.gid)
|
||||
val startPage = spiderQueen?.awaitStartPage() ?: 0
|
||||
withUIContext {
|
||||
binding.content.header.read.text = if (startPage == 0) {
|
||||
getString(R.string.read)
|
||||
@@ -354,6 +354,8 @@ class GalleryDetailScene : CollapsingToolbarScene(), View.OnClickListener, Downl
|
||||
return true
|
||||
}
|
||||
|
||||
private var spiderQueen: SpiderQueen? = null
|
||||
|
||||
override fun onCreateViewWithToolbar(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
@@ -421,11 +423,14 @@ class GalleryDetailScene : CollapsingToolbarScene(), View.OnClickListener, Downl
|
||||
}
|
||||
downloadManager.addDownloadInfoListener(this)
|
||||
(requireActivity() as MainActivity).mShareUrl = galleryDetailUrl
|
||||
spiderQueen = SpiderQueen.obtainSpiderQueen(galleryInfo!!, SpiderQueen.MODE_READ)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
spiderQueen?.let { SpiderQueen.releaseSpiderQueen(it, SpiderQueen.MODE_READ) }
|
||||
spiderQueen = null
|
||||
val context = context
|
||||
AssertUtils.assertNotNull(context)
|
||||
downloadManager.removeDownloadInfoListener(this)
|
||||
|
||||
Reference in new issue
Block a user