diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2014-03-09 10:46:26 +0100 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2014-03-09 10:46:26 +0100 |
| commit | f0a3713e084bdd6bac1c052635ae5436a1aaed10 (patch) | |
| tree | 64015fc9940d30e7585460671f7e3cf00f38c5ea /main | |
| parent | e0ab26ff7af5a1df16b21af21bd683b53fabaaa8 (diff) | |
| download | cgeo-f0a3713e084bdd6bac1c052635ae5436a1aaed10.zip cgeo-f0a3713e084bdd6bac1c052635ae5436a1aaed10.tar.gz cgeo-f0a3713e084bdd6bac1c052635ae5436a1aaed10.tar.bz2 | |
Use RxJava instead of thread for getting GCVote
Diffstat (limited to 'main')
| -rw-r--r-- | main/src/cgeo/geocaching/AbstractPopupActivity.java | 29 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/gcvote/GCVote.java | 2 |
2 files changed, 16 insertions, 15 deletions
diff --git a/main/src/cgeo/geocaching/AbstractPopupActivity.java b/main/src/cgeo/geocaching/AbstractPopupActivity.java index 375d06a..39adae9 100644 --- a/main/src/cgeo/geocaching/AbstractPopupActivity.java +++ b/main/src/cgeo/geocaching/AbstractPopupActivity.java @@ -8,14 +8,19 @@ import cgeo.geocaching.gcvote.GCVote; import cgeo.geocaching.gcvote.GCVoteRating; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.geopoint.Units; +import cgeo.geocaching.sensors.GeoDirHandler; import cgeo.geocaching.sensors.IGeoData; import cgeo.geocaching.settings.Settings; import cgeo.geocaching.ui.CacheDetailsCreator; import cgeo.geocaching.ui.LoggingUI; -import cgeo.geocaching.sensors.GeoDirHandler; import cgeo.geocaching.utils.Log; import org.apache.commons.lang3.StringUtils; +import rx.Observable; +import rx.android.observables.AndroidObservable; +import rx.functions.Action1; +import rx.functions.Func0; +import rx.schedulers.Schedulers; import android.graphics.Rect; import android.os.Bundle; @@ -75,24 +80,20 @@ public abstract class AbstractPopupActivity extends AbstractActivity implements if (!cache.supportsGCVote()) { return; } - - (new Thread("Load GCVote") { + AndroidObservable.fromActivity(this, Observable.defer(new Func0<Observable<GCVoteRating>>() { @Override - public void run() { + public Observable<GCVoteRating> call() { final GCVoteRating rating = GCVote.getRating(cache.getGuid(), geocode); - - if (rating == null) { - return; - } + return rating != null ? Observable.just(rating) : Observable.<GCVoteRating>empty(); + } + }).subscribeOn(Schedulers.io())).subscribe(new Action1<GCVoteRating>() { + @Override + public void call(final GCVoteRating rating) { cache.setRating(rating.getRating()); cache.setVotes(rating.getVotes()); - runOnUiThread(new Runnable() { - @Override - public void run() { - details.addRating(cache); } - }); + details.addRating(cache); } - }).start(); + }); } protected void init() { diff --git a/main/src/cgeo/geocaching/gcvote/GCVote.java b/main/src/cgeo/geocaching/gcvote/GCVote.java index fd4b914..0ab1fe3 100644 --- a/main/src/cgeo/geocaching/gcvote/GCVote.java +++ b/main/src/cgeo/geocaching/gcvote/GCVote.java @@ -69,7 +69,7 @@ public final class GCVote { * @param geocodes * @return */ - public static Map<String, GCVoteRating> getRating(final List<String> guids, final List<String> geocodes) { + private static Map<String, GCVoteRating> getRating(final List<String> guids, final List<String> geocodes) { if (guids == null && geocodes == null) { return null; } |
