diff options
Diffstat (limited to 'main/src/cgeo/geocaching/CacheDetailActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/CacheDetailActivity.java | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 6b7da94..dca0a43 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -64,10 +64,12 @@ import org.eclipse.jdt.annotation.Nullable; import rx.Observable; import rx.Observable.OnSubscribe; import rx.Subscriber; +import rx.Subscription; import rx.android.observables.AndroidObservable; import rx.functions.Action0; import rx.functions.Action1; import rx.subscriptions.CompositeSubscription; +import rx.subscriptions.Subscriptions; import android.R.color; import android.app.AlertDialog; @@ -168,6 +170,9 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc */ private Waypoint selectedWaypoint; + private boolean requireGeodata; + private Subscription geoDataSubscription = Subscriptions.empty(); + @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState, R.layout.cachedetail_activity); @@ -291,8 +296,11 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc if (getPage(position) == Page.IMAGES) { loadCacheImages(); } + requireGeodata = getPage(position) == Page.DETAILS; + startOrStopGeoDataListener(); } }); + requireGeodata = pageToOpen == 1; final String realGeocode = geocode; final String realGuid = guid; @@ -313,9 +321,17 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc outState.putInt(STATE_PAGE_INDEX, getCurrentItem()); } + private void startOrStopGeoDataListener() { + geoDataSubscription.unsubscribe(); + if (requireGeodata) { + geoDataSubscription = locationUpdater.start(GeoDirHandler.UPDATE_GEODATA); + } + } + @Override public void onResume() { - super.onResume(locationUpdater.start(GeoDirHandler.UPDATE_GEODATA)); + super.onResume(); + startOrStopGeoDataListener(); if (refreshOnResume) { notifyDataSetChanged(); @@ -324,6 +340,12 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc } @Override + public void onPause() { + geoDataSubscription.unsubscribe(); + super.onPause(); + } + + @Override public void onDestroy() { createSubscriptions.unsubscribe(); super.onDestroy(); |
