diff options
8 files changed, 22 insertions, 24 deletions
diff --git a/main/src/cgeo/geocaching/AbstractPopupActivity.java b/main/src/cgeo/geocaching/AbstractPopupActivity.java index 39adae9..5978835 100644 --- a/main/src/cgeo/geocaching/AbstractPopupActivity.java +++ b/main/src/cgeo/geocaching/AbstractPopupActivity.java @@ -161,7 +161,6 @@ public abstract class AbstractPopupActivity extends AbstractActivity implements @Override public void onPause() { - geoUpdate.stop(); super.onPause(); } @@ -183,9 +182,8 @@ public abstract class AbstractPopupActivity extends AbstractActivity implements @Override public void onResume() { - super.onResume(); + super.onResume(geoUpdate.start()); init(); - geoUpdate.start(); } @Override diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 5d529ee..dd095f5 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -312,13 +312,12 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc @Override public void onResume() { - super.onResume(); + super.onResume(locationUpdater.start()); if (refreshOnResume) { notifyDataSetChanged(); refreshOnResume = false; } - locationUpdater.start(); } @Override @@ -339,7 +338,6 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc @Override public void onPause() { - locationUpdater.stop(); super.onPause(); } diff --git a/main/src/cgeo/geocaching/CompassActivity.java b/main/src/cgeo/geocaching/CompassActivity.java index a51e477..b7dcd7e 100644 --- a/main/src/cgeo/geocaching/CompassActivity.java +++ b/main/src/cgeo/geocaching/CompassActivity.java @@ -118,15 +118,11 @@ public class CompassActivity extends AbstractActivity { @Override public void onResume() { - super.onResume(); - - // sensor and geolocation manager - geoDirHandler.start(); + super.onResume(geoDirHandler.start()); } @Override public void onPause() { - geoDirHandler.stop(); super.onPause(); } diff --git a/main/src/cgeo/geocaching/EditWaypointActivity.java b/main/src/cgeo/geocaching/EditWaypointActivity.java index 98884b8..ae17077 100644 --- a/main/src/cgeo/geocaching/EditWaypointActivity.java +++ b/main/src/cgeo/geocaching/EditWaypointActivity.java @@ -202,14 +202,11 @@ public class EditWaypointActivity extends AbstractActivity { @Override public void onResume() { - super.onResume(); - - geoDirHandler.start(); + super.onResume(geoDirHandler.start()); } @Override public void onPause() { - geoDirHandler.stop(); super.onPause(); } diff --git a/main/src/cgeo/geocaching/MainActivity.java b/main/src/cgeo/geocaching/MainActivity.java index bfe0217..b83bef2 100644 --- a/main/src/cgeo/geocaching/MainActivity.java +++ b/main/src/cgeo/geocaching/MainActivity.java @@ -52,6 +52,7 @@ import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import rx.subscriptions.Subscriptions; import java.util.ArrayList; import java.util.Arrays; @@ -214,9 +215,7 @@ public class MainActivity extends AbstractActivity { @Override public void onResume() { - super.onResume(); - locationUpdater.start(); - satellitesHandler.start(); + super.onResume(Subscriptions.from(locationUpdater.start(), satellitesHandler.start())); updateUserInfoHandler.sendEmptyMessage(-1); startBackgroundLogin(); init(); @@ -257,8 +256,6 @@ public class MainActivity extends AbstractActivity { @Override public void onPause() { initialized = false; - locationUpdater.stop(); - satellitesHandler.stop(); super.onPause(); } diff --git a/main/src/cgeo/geocaching/NavigateAnyPointActivity.java b/main/src/cgeo/geocaching/NavigateAnyPointActivity.java index 72cbc64..92a08fe 100644 --- a/main/src/cgeo/geocaching/NavigateAnyPointActivity.java +++ b/main/src/cgeo/geocaching/NavigateAnyPointActivity.java @@ -234,14 +234,12 @@ public class NavigateAnyPointActivity extends AbstractActivity { @Override public void onResume() { - super.onResume(); - geoDirHandler.start(); + super.onResume(geoDirHandler.start()); init(); } @Override public void onPause() { - geoDirHandler.stop(); super.onPause(); } diff --git a/main/src/cgeo/geocaching/activity/AbstractActivity.java b/main/src/cgeo/geocaching/activity/AbstractActivity.java index 7127de4..43fbcf2 100644 --- a/main/src/cgeo/geocaching/activity/AbstractActivity.java +++ b/main/src/cgeo/geocaching/activity/AbstractActivity.java @@ -21,6 +21,8 @@ import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; +import rx.Subscription; +import rx.subscriptions.Subscriptions; import java.util.Locale; @@ -29,6 +31,7 @@ public abstract class AbstractActivity extends FragmentActivity implements IAbst protected CgeoApplication app = null; protected Resources res = null; private boolean keepScreenOn = false; + private Subscription resumeSubscription = Subscriptions.empty(); protected AbstractActivity() { this(false); @@ -71,6 +74,16 @@ public abstract class AbstractActivity extends FragmentActivity implements IAbst initializeCommonFields(); } + public void onResume(final Subscription resumeSubscription) { + super.onResume(); + this.resumeSubscription = resumeSubscription; + } + + @Override + public void onPause() { + resumeSubscription.unsubscribe(); + } + protected static void disableSuggestions(final EditText edit) { Compatibility.disableSuggestions(edit); } diff --git a/main/src/cgeo/geocaching/sensors/GeoDirHandler.java b/main/src/cgeo/geocaching/sensors/GeoDirHandler.java index 523fb1f..917b9ff 100644 --- a/main/src/cgeo/geocaching/sensors/GeoDirHandler.java +++ b/main/src/cgeo/geocaching/sensors/GeoDirHandler.java @@ -42,13 +42,14 @@ public abstract class GeoDirHandler { * Register the current GeoDirHandler for GeoData and direction information (if the * preferences allow it). */ - public void start() { + public Subscription start() { subscription = app.geoDirObservable().subscribe(new Action1<ImmutablePair<IGeoData, Float>>() { @Override public void call(final ImmutablePair<IGeoData, Float> geoDir) { handleGeoDir(geoDir); } }, AndroidSchedulers.mainThread()); + return subscription; } /** |
