aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2014-03-22 12:20:57 +0100
committerSamuel Tardieu <sam@rfc1149.net>2014-03-22 14:27:59 +0100
commitf3f248749f1625b93835007291ec207cc42e92ab (patch)
tree2688e8a18126b69718e6f8343d658bd763236165 /main/src
parentdfa81310d0e5d6925d93bc089f7b526d7c344b11 (diff)
downloadcgeo-f3f248749f1625b93835007291ec207cc42e92ab.zip
cgeo-f3f248749f1625b93835007291ec207cc42e92ab.tar.gz
cgeo-f3f248749f1625b93835007291ec207cc42e92ab.tar.bz2
Better handling of unsubscriptions
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/geocaching/network/HtmlImage.java13
1 files changed, 6 insertions, 7 deletions
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<BitmapDrawable>() {
@Override
public void call(final Subscriber<? super BitmapDrawable> subscriber) {
- Schedulers.computation().schedule(new Action1<Inner>() {
+ subscription.add(subscriber);
+ subscriber.add(Schedulers.computation().schedule(new Action1<Inner>() {
@Override
public void call(final Inner inner) {
final Pair<BitmapDrawable, Boolean> loaded = loadFromDisk();
@@ -157,14 +156,14 @@ public class HtmlImage implements Html.ImageGetter {
if (bitmap != null && !onlySave) {
subscriber.onNext(bitmap);
}
- downloadScheduler.schedule(new Action1<Inner>() {
+ subscriber.add(downloadScheduler.schedule(new Action1<Inner>() {
@Override
public void call(final Inner inner) {
downloadAndSave(subscriber);
}
- });
+ }));
}
- });
+ }));
}
private Pair<BitmapDrawable, Boolean> 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;