Преглед на файлове

Fix NPE when the process restarts in the reader for downloaded chapters and save page list before killing the process.

inorichi преди 10 години
родител
ревизия
9a117f0969
променени са 1 файла, в които са добавени 25 реда и са изтрити 16 реда
  1. 25 16
      app/src/main/java/eu/kanade/mangafeed/ui/reader/ReaderPresenter.java

+ 25 - 16
app/src/main/java/eu/kanade/mangafeed/ui/reader/ReaderPresenter.java

@@ -1,6 +1,7 @@
 package eu.kanade.mangafeed.ui.reader;
 
 import android.os.Bundle;
+import android.support.annotation.NonNull;
 
 import java.io.File;
 import java.util.List;
@@ -65,6 +66,22 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> {
 
         retryPageSubject = PublishSubject.create();
 
+        restartableLatestCache(PRELOAD_NEXT_CHAPTER,
+                this::getPreloadNextChapterObservable,
+                (view, pages) -> {},
+                (view, error) -> Timber.e("An error occurred while preloading a chapter"));
+
+        restartableReplay(GET_PAGE_IMAGES,
+                () -> getPageImagesObservable()
+                        .doOnCompleted(this::preloadNextChapter),
+                (view, page) -> {},
+                (view, error) -> Timber.e("An error occurred while downloading an image"));
+
+        restartableLatestCache(RETRY_IMAGES,
+                this::getRetryPageObservable,
+                (view, page) -> {},
+                (view, error) -> Timber.e("An error occurred while downloading an image"));
+
         restartableLatestCache(GET_PAGE_LIST,
                 () -> getPageListObservable()
                         .doOnNext(pages -> pageList = pages)
@@ -80,22 +97,6 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> {
                 },
                 (view, error) -> view.onChapterError());
 
-        restartableReplay(GET_PAGE_IMAGES,
-                () -> getPageImagesObservable()
-                        .doOnCompleted(this::preloadNextChapter),
-                (view, page) -> {},
-                (view, error) -> Timber.e("An error occurred while downloading an image"));
-
-        restartableLatestCache(RETRY_IMAGES,
-                this::getRetryPageObservable,
-                (view, page) -> {},
-                (view, error) -> Timber.e("An error occurred while downloading an image"));
-
-        restartableLatestCache(PRELOAD_NEXT_CHAPTER,
-                this::getPreloadNextChapterObservable,
-                (view, pages) -> {},
-                (view, error) -> Timber.e("An error occurred while preloading a chapter"));
-
         registerForStickyEvents();
     }
 
@@ -107,6 +108,14 @@ public class ReaderPresenter extends BasePresenter<ReaderActivity> {
         super.onDestroy();
     }
 
+    @Override
+    protected void onSave(@NonNull Bundle state) {
+        if (pageList != null && !isDownloaded)
+            source.savePageList(chapter.url, pageList);
+
+        super.onSave(state);
+    }
+
     private void onProcessRestart() {
         source = sourceManager.get(sourceId);