From 8974b7c815cb1a312e534686478010b518ec8c37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Paczos?= Date: Tue, 15 Jan 2019 18:10:28 +0100 Subject: [android] do not invoke #onCancel when animation is scheduled from #onFinish block --- .../main/java/com/mapbox/mapboxsdk/maps/Transform.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java') diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java index 9356b112ba..c40994d7ca 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java @@ -5,6 +5,7 @@ import android.os.Handler; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.UiThread; + import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.camera.CameraUpdate; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; @@ -77,13 +78,15 @@ final class Transform implements MapView.OnCameraDidChangeListener { if (animated) { invalidateCameraPosition(); if (cameraCancelableCallback != null) { + final MapboxMap.CancelableCallback callback = cameraCancelableCallback; + + // nullification has to happen before Handler#post, see https://github.com/robolectric/robolectric/issues/1306 + cameraCancelableCallback = null; + handler.post(new Runnable() { @Override public void run() { - if (cameraCancelableCallback != null) { - cameraCancelableCallback.onFinish(); - cameraCancelableCallback = null; - } + callback.onFinish(); } }); } @@ -173,13 +176,16 @@ final class Transform implements MapView.OnCameraDidChangeListener { if (cameraCancelableCallback != null) { final MapboxMap.CancelableCallback callback = cameraCancelableCallback; cameraChangeDispatcher.onCameraIdle(); + + // nullification has to happen before Handler#post, see https://github.com/robolectric/robolectric/issues/1306 + cameraCancelableCallback = null; + handler.post(new Runnable() { @Override public void run() { callback.onCancel(); } }); - cameraCancelableCallback = null; } // cancel ongoing transitions -- cgit v1.2.1