From 9920b25af3c2f70bb22ed65885db2dd10dc10fe0 Mon Sep 17 00:00:00 2001 From: tobrun Date: Wed, 4 Jul 2018 17:04:39 +0200 Subject: [android] - avoid race condition when calling getMapAsync from OnMapReadyIdlingResource --- .../testapp/utils/OnMapReadyIdlingResource.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/OnMapReadyIdlingResource.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/OnMapReadyIdlingResource.java index 0e2e4587ee..4e4c69620a 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/OnMapReadyIdlingResource.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/utils/OnMapReadyIdlingResource.java @@ -1,6 +1,8 @@ package com.mapbox.mapboxsdk.testapp.utils; import android.app.Activity; +import android.os.Handler; +import android.support.annotation.WorkerThread; import android.support.test.espresso.IdlingResource; import com.mapbox.mapboxsdk.maps.MapView; @@ -14,14 +16,17 @@ public class OnMapReadyIdlingResource implements IdlingResource, OnMapReadyCallb private MapboxMap mapboxMap; private IdlingResource.ResourceCallback resourceCallback; + @WorkerThread public OnMapReadyIdlingResource(Activity activity) { - try { - Field field = activity.getClass().getDeclaredField("mapView"); - field.setAccessible(true); - ((MapView) field.get(activity)).getMapAsync(this); - } catch (Exception err) { - throw new RuntimeException(err); - } + new Handler(activity.getMainLooper()).post(() -> { + try { + Field field = activity.getClass().getDeclaredField("mapView"); + field.setAccessible(true); + ((MapView) field.get(activity)).getMapAsync(OnMapReadyIdlingResource.this); + } catch (Exception err) { + throw new RuntimeException(err); + } + }); } @Override -- cgit v1.2.1