Use BehaviorSubject instead of PublishSubject to observe page progress
This commit is contained in:
parent
e160f53bb2
commit
cd456d2186
@ -1,7 +1,7 @@
|
|||||||
package eu.kanade.mangafeed.data.models;
|
package eu.kanade.mangafeed.data.models;
|
||||||
|
|
||||||
import eu.kanade.mangafeed.data.helpers.NetworkHelper;
|
import eu.kanade.mangafeed.data.helpers.NetworkHelper;
|
||||||
import rx.subjects.PublishSubject;
|
import rx.subjects.BehaviorSubject;
|
||||||
|
|
||||||
public class Page implements NetworkHelper.ProgressListener {
|
public class Page implements NetworkHelper.ProgressListener {
|
||||||
|
|
||||||
@ -12,7 +12,7 @@ public class Page implements NetworkHelper.ProgressListener {
|
|||||||
private transient int status;
|
private transient int status;
|
||||||
private transient int progress;
|
private transient int progress;
|
||||||
|
|
||||||
private transient PublishSubject<Integer> statusSubject;
|
private transient BehaviorSubject<Integer> statusSubject;
|
||||||
|
|
||||||
public static final int QUEUE = 0;
|
public static final int QUEUE = 0;
|
||||||
public static final int LOAD_PAGE = 1;
|
public static final int LOAD_PAGE = 1;
|
||||||
@ -83,7 +83,7 @@ public class Page implements NetworkHelper.ProgressListener {
|
|||||||
progress = (int) ((100 * bytesRead) / contentLength);
|
progress = (int) ((100 * bytesRead) / contentLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStatusSubject(PublishSubject<Integer> subject) {
|
public void setStatusSubject(BehaviorSubject<Integer> subject) {
|
||||||
this.statusSubject = subject;
|
this.statusSubject = subject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ import rx.Observable;
|
|||||||
import rx.Subscription;
|
import rx.Subscription;
|
||||||
import rx.android.schedulers.AndroidSchedulers;
|
import rx.android.schedulers.AndroidSchedulers;
|
||||||
import rx.schedulers.Schedulers;
|
import rx.schedulers.Schedulers;
|
||||||
import rx.subjects.PublishSubject;
|
import rx.subjects.BehaviorSubject;
|
||||||
|
|
||||||
public class ReaderPageFragment extends Fragment {
|
public class ReaderPageFragment extends Fragment {
|
||||||
|
|
||||||
@ -104,17 +104,18 @@ public class ReaderPageFragment extends Fragment {
|
|||||||
|
|
||||||
private void processStatus(int status) {
|
private void processStatus(int status) {
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case Page.READY:
|
|
||||||
showImage();
|
|
||||||
unsubscribeProgress();
|
|
||||||
unsubscribeStatus();
|
|
||||||
break;
|
|
||||||
case Page.LOAD_PAGE:
|
case Page.LOAD_PAGE:
|
||||||
showLoading();
|
showLoading();
|
||||||
break;
|
break;
|
||||||
case Page.DOWNLOAD_IMAGE:
|
case Page.DOWNLOAD_IMAGE:
|
||||||
|
observeProgress();
|
||||||
showDownloading();
|
showDownloading();
|
||||||
break;
|
break;
|
||||||
|
case Page.READY:
|
||||||
|
showImage();
|
||||||
|
unsubscribeProgress();
|
||||||
|
unsubscribeStatus();
|
||||||
|
break;
|
||||||
case Page.ERROR:
|
case Page.ERROR:
|
||||||
showError();
|
showError();
|
||||||
unsubscribeProgress();
|
unsubscribeProgress();
|
||||||
@ -129,13 +130,9 @@ public class ReaderPageFragment extends Fragment {
|
|||||||
if (page.getStatus() == Page.READY) {
|
if (page.getStatus() == Page.READY) {
|
||||||
showImage();
|
showImage();
|
||||||
} else {
|
} else {
|
||||||
processStatus(page.getStatus());
|
BehaviorSubject<Integer> statusSubject = BehaviorSubject.create();
|
||||||
|
|
||||||
PublishSubject<Integer> statusSubject = PublishSubject.create();
|
|
||||||
page.setStatusSubject(statusSubject);
|
page.setStatusSubject(statusSubject);
|
||||||
|
|
||||||
observeProgress();
|
|
||||||
|
|
||||||
statusSubscription = statusSubject
|
statusSubscription = statusSubject
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(this::processStatus);
|
.subscribe(this::processStatus);
|
||||||
|
Loading…
Reference in New Issue
Block a user