diff --git a/unity-ads/src/main/java/com/unity3d/services/ads/operation/load/LoadModuleDecoratorTimeout.java b/unity-ads/src/main/java/com/unity3d/services/ads/operation/load/LoadModuleDecoratorTimeout.java index fef73fa1..24912264 100644 --- a/unity-ads/src/main/java/com/unity3d/services/ads/operation/load/LoadModuleDecoratorTimeout.java +++ b/unity-ads/src/main/java/com/unity3d/services/ads/operation/load/LoadModuleDecoratorTimeout.java @@ -4,6 +4,7 @@ import com.unity3d.ads.UnityAds; import com.unity3d.services.core.configuration.ConfigurationReader; +import com.unity3d.services.core.misc.Utilities; import com.unity3d.services.core.request.metrics.AdOperationError; import com.unity3d.services.core.request.metrics.AdOperationMetric; import com.unity3d.services.core.timer.BaseTimer; @@ -44,7 +45,7 @@ public void onTimerFinished() { }); loadOperationState.timeoutTimer.start(Executors.newSingleThreadScheduledExecutor()); } else { - _executorService.submit(new Runnable() { + _executorService.execute(new Runnable() { @Override public void run() { if (!loadOperationState.timeoutCV.block(loadOperationState.configuration.getLoadTimeout())) { @@ -87,7 +88,12 @@ private void onOperationTimeout(final LoadOperationState state) { if (state != null) { getMetricSender().sendMetricWithInitState(AdOperationMetric.newAdLoadFailure(AdOperationError.timeout, state.duration())); remove(state.id); - state.onUnityAdsFailedToLoad(UnityAds.UnityAdsLoadError.TIMEOUT, errorMsgTimeoutLoading + state.placementId); + Utilities.runOnUiThread(new Runnable() { + @Override + public void run() { + state.onUnityAdsFailedToLoad(UnityAds.UnityAdsLoadError.TIMEOUT, errorMsgTimeoutLoading + state.placementId); + } + }); } } } diff --git a/unity-ads/src/main/java/com/unity3d/services/ads/operation/show/ShowModuleDecoratorTimeout.java b/unity-ads/src/main/java/com/unity3d/services/ads/operation/show/ShowModuleDecoratorTimeout.java index 6376c103..aefc964b 100644 --- a/unity-ads/src/main/java/com/unity3d/services/ads/operation/show/ShowModuleDecoratorTimeout.java +++ b/unity-ads/src/main/java/com/unity3d/services/ads/operation/show/ShowModuleDecoratorTimeout.java @@ -4,6 +4,7 @@ import com.unity3d.ads.UnityAds; import com.unity3d.services.core.configuration.ConfigurationReader; +import com.unity3d.services.core.misc.Utilities; import com.unity3d.services.core.request.metrics.AdOperationError; import com.unity3d.services.core.request.metrics.AdOperationMetric; import com.unity3d.services.core.timer.BaseTimer; @@ -44,7 +45,7 @@ public void onTimerFinished() { }); showOperationState.timeoutTimer.start(Executors.newSingleThreadScheduledExecutor()); } else { - _executorService.submit(new Runnable() { + _executorService.execute(new Runnable() { @Override public void run() { if (!showOperationState.timeoutCV.block(showOperationState.configuration.getShowTimeout())) { @@ -89,11 +90,16 @@ private void releaseOperationTimeoutLock(String operationId) { } } - private void onOperationTimeout(final ShowOperationState state, UnityAds.UnityAdsShowError error, String message) { + private void onOperationTimeout(final ShowOperationState state, final UnityAds.UnityAdsShowError error,final String message) { if (state != null) { getMetricSender().sendMetricWithInitState(AdOperationMetric.newAdShowFailure(AdOperationError.timeout, state.duration())); remove(state.id); - state.onUnityAdsShowFailure(error, message); + Utilities.runOnUiThread(new Runnable() { + @Override + public void run() { + state.onUnityAdsShowFailure(error, message); + } + }); } } } diff --git a/unity-ads/src/main/java/com/unity3d/services/core/request/metrics/MetricSender.java b/unity-ads/src/main/java/com/unity3d/services/core/request/metrics/MetricSender.java index 7650f27c..5c37956e 100644 --- a/unity-ads/src/main/java/com/unity3d/services/core/request/metrics/MetricSender.java +++ b/unity-ads/src/main/java/com/unity3d/services/core/request/metrics/MetricSender.java @@ -76,7 +76,7 @@ public void sendMetrics(final List metrics) { return; } - _executorService.submit(new Runnable() { + _executorService.execute(new Runnable() { @Override public void run() { try { diff --git a/unity-ads/src/main/java/com/unity3d/services/core/webview/bridge/invocation/WebViewBridgeInvocation.java b/unity-ads/src/main/java/com/unity3d/services/core/webview/bridge/invocation/WebViewBridgeInvocation.java index b43f00f3..fa677a89 100644 --- a/unity-ads/src/main/java/com/unity3d/services/core/webview/bridge/invocation/WebViewBridgeInvocation.java +++ b/unity-ads/src/main/java/com/unity3d/services/core/webview/bridge/invocation/WebViewBridgeInvocation.java @@ -23,7 +23,7 @@ public WebViewBridgeInvocation(ExecutorService _executorService, IWebViewBridgeI @Override public synchronized void invoke(final String className, final String methodName, final int timeoutLengthInMilliSeconds, final Object... invocationParameters) { - _executorService.submit( + _executorService.execute( new WebViewBridgeInvocationRunnable(invocationCallback, _webViewBridgeInvoker, className, methodName, timeoutLengthInMilliSeconds, invocationParameters)); } }