diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index ee493b0786..54a9bb0d4d 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -520,6 +520,7 @@ public class MwmActivity extends BaseMwmFragmentActivity // } //}); //getWindow().getDecorView().addOnLayoutChangeListener(mVisibleRectMeasurer); + mTasks.add(new RestoreRouteTask()); } private void initViews() @@ -952,6 +953,9 @@ public class MwmActivity extends BaseMwmFragmentActivity if (mFilterController != null) mFilterController.onSaveState(outState); + if (!isChangingConfigurations()) + RoutingController.get().saveRoute(); + super.onSaveInstanceState(outState); } @@ -2314,4 +2318,15 @@ public class MwmActivity extends BaseMwmFragmentActivity return true; } } + + private static class RestoreRouteTask implements MapTask + { + + @Override + public boolean run(MwmActivity target) + { + RoutingController.get().restoreRoute(); + return true; + } + } } diff --git a/android/src/com/mapswithme/maps/routing/RoutingController.java b/android/src/com/mapswithme/maps/routing/RoutingController.java index 3cf446ac08..cdbb57ee08 100644 --- a/android/src/com/mapswithme/maps/routing/RoutingController.java +++ b/android/src/com/mapswithme/maps/routing/RoutingController.java @@ -361,6 +361,21 @@ public class RoutingController implements TaxiManager.TaxiListener }).show(); } + public void restoreRoute() + { + if (Framework.nativeHasSavedRoutePoints()) + { + Framework.nativeLoadRoutePoints(); + prepare(getStartPoint(), getEndPoint()); + } + } + + public void saveRoute() + { + if (isNavigating() || (isPlanning() && isBuilt())) + Framework.nativeSaveRoutePoints(); + } + public void prepare(@Nullable MapObject endPoint) { prepare(endPoint, false);