summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorJoey Grover <joeygrover@gmail.com>2022-03-23 11:52:23 -0400
committerGitHub <noreply@github.com>2022-03-23 11:52:23 -0400
commit0f75391e6b325013ca73b43c4c7c5041609e48f9 (patch)
tree9e8bd0972c77667329b9cdeff5d97b3416aff4d5 /android
parent7094f6f33f51357754316307fac3fd3a15991112 (diff)
downloadsdl_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.java7
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java7
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 {