diff options
author | rleix <rayx.lei@intel.com> | 2018-10-18 16:36:56 +0800 |
---|---|---|
committer | Guobin Zhang <guobin.zhang@intel.com> | 2018-11-29 03:51:08 +0000 |
commit | 458997325a5bbc513163c13be681f9d0a8ff760f (patch) | |
tree | fe69936edcc4556ad39dc8829fda36513bd73989 | |
parent | e9312bd9a70b813309e7ec1af724e0b4316dd478 (diff) | |
download | Car-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.java | 10 | ||||
-rw-r--r-- | tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java | 8 |
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() { |