diff options
author | Joey Grover <joeygrover@gmail.com> | 2022-03-23 11:52:23 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-23 11:52:23 -0400 |
commit | 0f75391e6b325013ca73b43c4c7c5041609e48f9 (patch) | |
tree | 9e8bd0972c77667329b9cdeff5d97b3416aff4d5 /android | |
parent | 7094f6f33f51357754316307fac3fd3a15991112 (diff) | |
download | sdl_android-0f75391e6b325013ca73b43c4c7c5041609e48f9.tar.gz |
Fix LCM to close down properly (#1796)
* Add UAI request to clean method in LCM
This makes sure to send an UAI request when the LCM is shutting down to clear it from the head unit. Also removed redundent code to cose services and ignore the UAI response because there’s nothing the library can do at that point anyways.
* Add missing initilize to JavaSE LCM
* Fix incorrect start call when should stop in SdlManager
* Add states to LCM
* Prevent duplicate calls to SdlManager.dispose
* Fix formatting issues for shutdown fix
#1796
Co-authored-by: Julian Kast <Julian.kast@livio.io>
Co-authored-by: Julian Kast <Julian.kast@livio.io>
Diffstat (limited to 'android')
-rw-r--r-- | android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java | 7 | ||||
-rw-r--r-- | android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java | 7 |
2 files changed, 11 insertions, 3 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java index 9fcb65b12..6dc3ce4aa 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java @@ -237,6 +237,11 @@ public class SdlManager extends BaseSdlManager { @SuppressLint("NewApi") @Override public synchronized void dispose() { + int state = getState(); + if (state == BaseSubManager.SHUTDOWN || state == BaseSubManager.ERROR) { + DebugTool.logInfo(TAG, "SdlManager already disposed"); + return; + } if (this.permissionManager != null) { this.permissionManager.dispose(); } @@ -414,7 +419,7 @@ public class SdlManager extends BaseSdlManager { @Override public void stop() { - lifecycleManager.getInternalInterface(SdlManager.this).start(); + lifecycleManager.getInternalInterface(SdlManager.this).stop(); } @Override diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java index 8324e6344..bfe73c19f 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java @@ -32,6 +32,8 @@ package com.smartdevicelink.managers.lifecycle; +import static com.smartdevicelink.managers.BaseSubManager.SETTING_UP; + import android.content.Context; import androidx.annotation.RestrictTo; @@ -89,12 +91,13 @@ public class LifecycleManager extends BaseLifecycleManager { @Override void cycle(SdlDisconnectedReason disconnectedReason) { - clean(); - initialize(); + clean(true); 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 onClose("Sdl Proxy Cycled", new SdlException("Sdl Proxy Cycled", SdlExceptionCause.SDL_PROXY_CYCLED), disconnectedReason); } + transitionToState(SETTING_UP); + initialize(); synchronized (SESSION_LOCK) { if (session != null) { try { |