From 8a641451dc2e466595e63d11dcbcf9b8ac0fe5ff Mon Sep 17 00:00:00 2001 From: Joey Grover Date: Wed, 7 Aug 2019 15:45:33 -0400 Subject: Run cycleProxy on main looper, delay during - The session creation needs to happen using the main looper - When a language change occurs, it can take time before the VR engine is readon on the module, so gave it a sleep --- .../java/com/smartdevicelink/proxy/SdlProxyBase.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java b/android/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java index b7d81716b..8f80117d9 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java @@ -1834,6 +1834,12 @@ public abstract class SdlProxyBase try{ _cycling = true; cleanProxy(disconnectedReason); + + if(SdlDisconnectedReason.LANGUAGE_CHANGE.equals(disconnectedReason) ){ + //The VR engine might need time to reset + Thread.sleep(5000); + } + initializeProxy(); if(!SdlDisconnectedReason.LEGACY_BLUETOOTH_MODE_ENABLED.equals(disconnectedReason) && !SdlDisconnectedReason.PRIMARY_TRANSPORT_CYCLE_REQUEST.equals(disconnectedReason)){//We don't want to alert higher if we are just cycling for legacy bluetooth @@ -4108,7 +4114,18 @@ public abstract class SdlProxyBase if (_advancedLifecycleManagementEnabled) { // This requires the proxy to be cycled - cycleProxy(SdlDisconnectedReason.convertAppInterfaceUnregisteredReason(msg.getReason())); + + if(_mainUIHandler == null){ + _mainUIHandler = new Handler(Looper.getMainLooper()); + } + + //This needs to be ran on the main thread + _mainUIHandler.post(new Runnable() { + @Override + public void run() { + cycleProxy(SdlDisconnectedReason.convertAppInterfaceUnregisteredReason(msg.getReason())); + } + }); } else { if (_callbackToUIThread) { // Run in UI thread -- cgit v1.2.1