From f3f248749f1625b93835007291ec207cc42e92ab Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Sat, 22 Mar 2014 12:20:57 +0100 Subject: Better handling of unsubscriptions --- main/src/cgeo/geocaching/network/HtmlImage.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'main/src') diff --git a/main/src/cgeo/geocaching/network/HtmlImage.java b/main/src/cgeo/geocaching/network/HtmlImage.java index 524617c..70cd095 100644 --- a/main/src/cgeo/geocaching/network/HtmlImage.java +++ b/main/src/cgeo/geocaching/network/HtmlImage.java @@ -13,14 +13,12 @@ import cgeo.geocaching.utils.Log; import ch.boye.httpclientandroidlib.HttpResponse; import ch.boye.httpclientandroidlib.androidextra.Base64; - import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; - import rx.Observable; import rx.Observable.OnSubscribe; import rx.Scheduler; @@ -144,7 +142,8 @@ public class HtmlImage implements Html.ImageGetter { return Observable.create(new OnSubscribe() { @Override public void call(final Subscriber subscriber) { - Schedulers.computation().schedule(new Action1() { + subscription.add(subscriber); + subscriber.add(Schedulers.computation().schedule(new Action1() { @Override public void call(final Inner inner) { final Pair loaded = loadFromDisk(); @@ -157,14 +156,14 @@ public class HtmlImage implements Html.ImageGetter { if (bitmap != null && !onlySave) { subscriber.onNext(bitmap); } - downloadScheduler.schedule(new Action1() { + subscriber.add(downloadScheduler.schedule(new Action1() { @Override public void call(final Inner inner) { downloadAndSave(subscriber); } - }); + })); } - }); + })); } private Pair loadFromDisk() { @@ -187,7 +186,7 @@ public class HtmlImage implements Html.ImageGetter { return; } } else { - if (subscription.isUnsubscribed() || downloadOrRefreshCopy(url, file)) { + if (subscriber.isUnsubscribed() || downloadOrRefreshCopy(url, file)) { // The existing copy was fresh enough or we were unsubscribed earlier. subscriber.onCompleted(); return; -- cgit v1.1