Fix DownloadPageLoader resource leak (#8905)

The underlying ZipFile is leaking. To fix, store a reference to the
ZipPageLoader and recycle it on recycle.
This commit is contained in:
Two-Ai 2023-01-13 22:30:47 -05:00 committed by GitHub
parent 8cea78de83
commit 8c494f314c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -29,6 +29,13 @@ class DownloadPageLoader(
// Needed to open input streams
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.
*/
@ -43,7 +50,7 @@ class DownloadPageLoader(
}
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()
}
@ -61,6 +68,6 @@ class DownloadPageLoader(
}
override fun getPage(page: ReaderPage): Observable<Page.State> {
return Observable.just(Page.State.READY)
return zipPageLoader?.getPage(page) ?: Observable.just(Page.State.READY)
}
}