Fix DownloadPageLoader resource leak (#8905)

The underlying ZipFile is leaking. To fix, store a reference to the
ZipPageLoader and recycle it on recycle.

(cherry picked from commit 8c494f314cf77e54675f8d9742d50ed0ef94df59)
This commit is contained in:
Two-Ai 2023-01-13 22:30:47 -05:00 committed by Jobobby04
parent 822fda4d2b
commit 68609b38b0

View File

@ -29,6 +29,13 @@ class DownloadPageLoader(
// Needed to open input streams // Needed to open input streams
private val context: Application by injectLazy() private val context: Application by injectLazy()
private var zipPageLoader: ZipPageLoader? = null
override fun recycle() {
super.recycle()
zipPageLoader?.recycle()
}
/** /**
* Returns an observable containing the pages found on this downloaded chapter. * Returns an observable containing the pages found on this downloaded chapter.
*/ */
@ -43,7 +50,7 @@ class DownloadPageLoader(
} }
private fun getPagesFromArchive(chapterPath: UniFile): Observable<List<ReaderPage>> { private fun getPagesFromArchive(chapterPath: UniFile): Observable<List<ReaderPage>> {
val loader = ZipPageLoader(File(chapterPath.filePath!!)) val loader = ZipPageLoader(File(chapterPath.filePath!!)).also { zipPageLoader = it }
return loader.getPages() return loader.getPages()
} }
@ -61,6 +68,6 @@ class DownloadPageLoader(
} }
override fun getPage(page: ReaderPage): Observable<Page.State> { override fun getPage(page: ReaderPage): Observable<Page.State> {
return Observable.just(Page.State.READY) return zipPageLoader?.getPage(page) ?: Observable.just(Page.State.READY)
} }
} }