소스 검색

Fix DownloadPageLoader resource leak (#8905)

The underlying ZipFile is leaking. To fix, store a reference to the
ZipPageLoader and recycle it on recycle.
Two-Ai 2 년 전
부모
커밋
8c494f314c
1개의 변경된 파일9개의 추가작업 그리고 2개의 파일을 삭제
  1. 9 2
      app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt

+ 9 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt

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