aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrleix <rayx.lei@intel.com>2018-10-18 16:36:56 +0800
committerGuobin Zhang <guobin.zhang@intel.com>2018-11-29 03:51:08 +0000
commit458997325a5bbc513163c13be681f9d0a8ff760f (patch)
treefe69936edcc4556ad39dc8829fda36513bd73989
parente9312bd9a70b813309e7ec1af724e0b4316dd478 (diff)
downloadCar-458997325a5bbc513163c13be681f9d0a8ff760f.tar.gz
Add cleanup upon disconnect of CarService
Cleanup in client side is needed upon reboot of CarService. Otherwise the client will crash due to below error: IllegalStateException("Client callback is already configured.") Test: 1. Launch the VmsSubscriberClientSample app Test: 2. Crash the CarService with adb shell (kill com.android.car) Test: 3. The sample app will crash bug: 120159496 Change-Id: Iba5c8da7533a2b77042fa095a5e6f2c03f46785b Signed-off-by: Lei,RayX <rayx.lei@intel.com> Signed-off-by: Guobin Zhang <guobin.zhang@intel.com>
-rw-r--r--car-lib/src/android/car/vms/VmsSubscriberManager.java10
-rw-r--r--tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java8
2 files changed, 13 insertions, 5 deletions
diff --git a/car-lib/src/android/car/vms/VmsSubscriberManager.java b/car-lib/src/android/car/vms/VmsSubscriberManager.java
index fe9e8c366d..1416b41758 100644
--- a/car-lib/src/android/car/vms/VmsSubscriberManager.java
+++ b/car-lib/src/android/car/vms/VmsSubscriberManager.java
@@ -155,11 +155,11 @@ public final class VmsSubscriberManager implements CarManagerBase {
} catch (RemoteException e) {
Log.e(TAG, "Could not connect: ", e);
throw new CarNotConnectedException(e);
- }
-
- synchronized (mClientCallbackLock) {
- mClientCallback = null;
- mExecutor = null;
+ } finally {
+ synchronized (mClientCallbackLock) {
+ mClientCallback = null;
+ mExecutor = null;
+ }
}
}
diff --git a/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java b/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java
index a82350b44f..d1b92dcb59 100644
--- a/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java
+++ b/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java
@@ -84,6 +84,14 @@ public class VmsSubscriberClientSampleActivity extends Activity {
@Override
public void onDisconnected(Car car) {
Log.d(TAG, "Disconnect from Car Service");
+ if (mVmsSubscriberManager != null) {
+ try {
+ mVmsSubscriberManager.clearVmsSubscriberClientCallback();
+ mVmsSubscriberManager.unsubscribe(TEST_LAYER);
+ } catch (android.car.CarNotConnectedException e) {
+ Log.e(TAG, "Car is not connected!", e);
+ }
+ }
}
private VmsSubscriberManager getVmsSubscriberManager() {