From 3f239d470ef4a151705d5378013c9e86b49be8cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Paczos?= Date: Wed, 28 Aug 2019 16:44:02 +0200 Subject: [PATCH] [android] do not clear native layers and sources when style is reloading This prevents unnecessary layers blink when the same components are re-added after the style reload. --- .../mapboxsdk/location/LocationComponent.java | 2 +- .../java/com/mapbox/mapboxsdk/maps/Style.java | 2 -- .../com/mapbox/mapboxsdk/maps/StyleTest.kt | 18 ------------------ 3 files changed, 1 insertion(+), 21 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java index 5b2dcd85548..46de3673e48 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java @@ -1182,7 +1182,6 @@ private void onLocationLayerStop() { } isLayerReady = false; - locationLayerController.hide(); staleStateManager.onStop(); if (compassEngine != null) { updateCompassListenerState(false); @@ -1289,6 +1288,7 @@ private void enableLocationComponent() { private void disableLocationComponent() { isEnabled = false; + locationLayerController.hide(); onLocationLayerStop(); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java index a707ab13da9..b21186050be 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java @@ -523,14 +523,12 @@ void clear() { for (Layer layer : layers.values()) { if (layer != null) { layer.setDetached(); - nativeMap.removeLayer(layer); } } for (Source source : sources.values()) { if (source != null) { source.setDetached(); - nativeMap.removeSource(source); } } diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/StyleTest.kt b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/StyleTest.kt index d618f175001..a5070ae5c02 100644 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/StyleTest.kt +++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/StyleTest.kt @@ -405,22 +405,4 @@ class StyleTest { Assert.assertEquals("Layer that failed to be added shouldn't be cached", layer1, mapboxMap.style!!.getLayer("layer1")) } } - - @Test - fun testClearRemovesSourcesFirst() { - val source1 = mockk(relaxed = true) - every { source1.id } returns "source1" - val layer1 = mockk(relaxed = true) - every { layer1.id } returns "layer1" - - val builder = Style.Builder().withLayer(layer1).withSource(source1) - mapboxMap.setStyle(builder) - mapboxMap.notifyStyleLoaded() - mapboxMap.setStyle(Style.MAPBOX_STREETS) - - verifyOrder { - nativeMapView.removeLayer(layer1) - nativeMapView.removeSource(source1) - } - } } \ No newline at end of file