From 50e298e959e4b5b779b142e2edf41945b4bc4705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Paczos?= Date: Mon, 22 Jul 2019 15:29:52 +0200 Subject: [android] remove layers first when clearing the style --- .../main/java/com/mapbox/mapboxsdk/maps/Style.java | 14 ++++++------- .../java/com/mapbox/mapboxsdk/maps/StyleTest.kt | 23 ++++++++++++++++++---- 2 files changed, 26 insertions(+), 11 deletions(-) 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 07e0daef54..a449ad8a06 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 @@ -518,13 +518,6 @@ public class Style { */ void clear() { fullyLoaded = false; - for (Source source : sources.values()) { - if (source != null) { - source.setDetached(); - nativeMap.removeSource(source); - } - } - for (Layer layer : layers.values()) { if (layer != null) { layer.setDetached(); @@ -532,6 +525,13 @@ public class Style { } } + for (Source source : sources.values()) { + if (source != null) { + source.setDetached(); + nativeMap.removeSource(source); + } + } + for (Map.Entry bitmapEntry : images.entrySet()) { nativeMap.removeImage(bitmapEntry.getKey()); bitmapEntry.getValue().recycle(); 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 7b5ed67184..9a7462b8d0 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 @@ -8,10 +8,7 @@ import com.mapbox.mapboxsdk.style.layers.SymbolLayer import com.mapbox.mapboxsdk.style.layers.TransitionOptions import com.mapbox.mapboxsdk.style.sources.CannotAddSourceException import com.mapbox.mapboxsdk.style.sources.GeoJsonSource -import io.mockk.every -import io.mockk.mockk -import io.mockk.spyk -import io.mockk.verify +import io.mockk.* import org.junit.Assert import org.junit.Before import org.junit.Test @@ -408,4 +405,22 @@ 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 -- cgit v1.2.1