diff options
author | Łukasz Paczos <lukas.paczos@gmail.com> | 2018-09-05 11:32:48 +0200 |
---|---|---|
committer | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2018-09-12 12:29:07 +0200 |
commit | 00f9549ea70fff34edafb98035d47d62b37f4b9b (patch) | |
tree | 2a247123f0f7053800fbda539f79ee1ce3cf3152 | |
parent | c9d24c9ff44f7c9d6179335298dae4d3ace26a37 (diff) | |
download | qtlocation-mapboxgl-00f9549ea70fff34edafb98035d47d62b37f4b9b.tar.gz |
[android] deactivating default location engine when the map is destroyed
3 files changed, 20 insertions, 6 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 76870e44d9..83a0ef0e62 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -426,6 +426,10 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { onMapChangedListeners.clear(); mapCallback.clearOnMapReadyCallbacks(); + if (mapboxMap != null) { + mapboxMap.onDestroy(); + } + if (nativeMapView != null && hasSurface) { // null when destroying an activity programmatically mapbox-navigation-android/issues/503 nativeMapView.destroy(); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index 8892aa45fe..588a327839 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -159,6 +159,13 @@ public final class MapboxMap { } /** + * Called when the hosting Activity/Fragment onDestroy()/onDestroyView() method is called. + */ + void onDestroy() { + locationLayerPlugin.onDestroy(); + } + + /** * Called before the OnMapReadyCallback is invoked. */ void onPreMapReady() { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java index 021729b6ba..1fcdaa7c76 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java @@ -653,12 +653,6 @@ public final class LocationLayerPlugin { * Internal use. */ public void onStart() { - // TODO: 03.09.18 LLP when map destroyed - /*if (context.isDestroyed()) { - Logger.e("You are calling plugins #onStart after the map was destroyed. Re-create the plugin before using it."); - return; - }*/ - isPluginStarted = true; onLocationLayerStart(); } @@ -674,6 +668,15 @@ public final class LocationLayerPlugin { /** * Internal use. */ + public void onDestroy() { + if (locationEngine != null && usingInternalLocationEngine) { + locationEngine.deactivate(); + } + } + + /** + * Internal use. + */ public void onStartLoadingMap() { onLocationLayerStop(); } |