From 85dded998260f27ac31b9fa1c5f334c5ca157178 Mon Sep 17 00:00:00 2001 From: Cameron Mace Date: Mon, 2 Apr 2018 16:02:30 -0400 Subject: [PATCH 1/2] remove and readd onMapChange in onStart/onStop --- .../mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java b/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java index 55146ddce..b036a2c70 100644 --- a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java +++ b/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java @@ -422,6 +422,7 @@ public void onStart() { } setLastLocation(); setLastCompassHeading(); + mapView.addOnMapChangedListener(onMapChangedListener); } if (mapboxMap != null) { mapboxMap.addOnCameraMoveListener(onCameraMoveListener); @@ -448,6 +449,7 @@ public void onStop() { if (mapboxMap != null) { mapboxMap.removeOnCameraMoveListener(onCameraMoveListener); } + mapView.removeOnMapChangedListener(onMapChangedListener); } private void initialize() { From 68e23b59147ababa8b2489c48cbbc84d9c767059 Mon Sep 17 00:00:00 2001 From: Cameron Mace Date: Wed, 16 May 2018 13:43:09 -0400 Subject: [PATCH 2/2] add seperate methods for location layer lifecycles --- .../LocationLayerMapChangeActivity.java | 28 +++----------- .../locationlayer/LocationLayerPlugin.java | 37 ++++++++++++------- 2 files changed, 28 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/location/LocationLayerMapChangeActivity.java b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/location/LocationLayerMapChangeActivity.java index 37f31f058..8439cae5b 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/location/LocationLayerMapChangeActivity.java +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/location/LocationLayerMapChangeActivity.java @@ -3,8 +3,6 @@ import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; -import android.view.Menu; -import android.view.MenuItem; import com.mapbox.android.core.location.LocationEngine; import com.mapbox.android.core.location.LocationEnginePriority; @@ -50,6 +48,7 @@ public void onMapReady(MapboxMap mapboxMap) { this.mapboxMap = mapboxMap; locationEngine = new LocationEngineProvider(this).obtainBestLocationEngineAvailable(); locationEngine.setPriority(LocationEnginePriority.HIGH_ACCURACY); + locationEngine.setFastestInterval(1000); locationEngine.activate(); locationPlugin = new LocationLayerPlugin(mapView, mapboxMap, locationEngine); locationPlugin.setRenderMode(RenderMode.COMPASS); @@ -64,9 +63,13 @@ public void onStyleFabClick() { } @Override + @SuppressWarnings( {"MissingPermission"}) protected void onStart() { super.onStart(); mapView.onStart(); + if (locationEngine != null) { + locationEngine.requestLocationUpdates(); + } } @Override @@ -96,27 +99,6 @@ protected void onSaveInstanceState(Bundle outState) { mapView.onSaveInstanceState(outState); } - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.menu_location, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (locationPlugin == null) { - return super.onOptionsItemSelected(item); - } - - if (item.getItemId() == R.id.action_style_change) { - customStyle = !customStyle; - locationPlugin.applyStyle(customStyle ? R.style.CustomLocationLayer : R.style.mapbox_LocationLayer); - return true; - } - - return super.onOptionsItemSelected(item); - } - @Override protected void onDestroy() { super.onDestroy(); diff --git a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java b/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java index b036a2c70..8edb7b26b 100644 --- a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java +++ b/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java @@ -416,13 +416,30 @@ public void removeOnLocationStaleListener(@NonNull OnLocationStaleListener liste @RequiresPermission(anyOf = {ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION}) @OnLifecycleEvent(Lifecycle.Event.ON_START) public void onStart() { + onLocationLayerStart(); + if (isEnabled) { + mapView.addOnMapChangedListener(onMapChangedListener); + } + } + + /** + * Required to place inside your activities {@code onStop} method. + * + * @since 0.1.0 + */ + @OnLifecycleEvent(Lifecycle.Event.ON_STOP) + public void onStop() { + onLocationLayerStop(); + mapView.removeOnMapChangedListener(onMapChangedListener); + } + + void onLocationLayerStart() { if (isEnabled) { if (locationEngine != null) { locationEngine.addLocationEngineListener(locationEngineListener); } setLastLocation(); setLastCompassHeading(); - mapView.addOnMapChangedListener(onMapChangedListener); } if (mapboxMap != null) { mapboxMap.addOnCameraMoveListener(onCameraMoveListener); @@ -433,13 +450,7 @@ public void onStart() { compassManager.onStart(); } - /** - * Required to place inside your activities {@code onStop} method. - * - * @since 0.1.0 - */ - @OnLifecycleEvent(Lifecycle.Event.ON_STOP) - public void onStop() { + void onLocationLayerStop() { staleStateManager.onStop(); compassManager.onStop(); locationLayerAnimator.cancelAllAnimations(); @@ -449,13 +460,11 @@ public void onStop() { if (mapboxMap != null) { mapboxMap.removeOnCameraMoveListener(onCameraMoveListener); } - mapView.removeOnMapChangedListener(onMapChangedListener); } private void initialize() { AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); - mapView.addOnMapChangedListener(onMapChangedListener); mapboxMap.addOnMapClickListener(onMapClickListener); mapboxMap.addOnMapLongClickListener(onMapLongClickListener); @@ -480,13 +489,13 @@ private void initialize() { @SuppressLint("MissingPermission") private void enableLocationLayerPlugin() { isEnabled = true; - onStart(); + onLocationLayerStart(); locationLayer.show(); } private void disableLocationLayerPlugin() { isEnabled = false; - onStop(); + onLocationLayerStop(); locationLayer.hide(); } @@ -603,13 +612,13 @@ public void onStaleStateChange(boolean isStale) { @Override public void onMapChanged(int change) { if (change == MapView.WILL_START_LOADING_MAP) { - onStop(); + onLocationLayerStop(); } else if (change == MapView.DID_FINISH_LOADING_STYLE) { locationLayer.initializeComponents(options); locationLayerCamera.initializeOptions(options); setRenderMode(locationLayer.getRenderMode()); setCameraMode(locationLayerCamera.getCameraMode()); - onStart(); + onLocationLayerStart(); } } };