Fix AAE dev guide sycnhronized pattern issues + receiver leak
Bug: b/143696191
Bug: b/143695396
Test: Build, Flash automotive hardware, force reconnects, test projected
applications, run atest unit tests, run automated tests using dumpsys
activity broadcasts com.android.car to watch for leaked receivers
Change-Id: I344e4b67b2ad5e25747f6f4c74bd55d1554893fe
diff --git a/service/src/com/android/car/BluetoothDeviceConnectionPolicy.java b/service/src/com/android/car/BluetoothDeviceConnectionPolicy.java
index 4bb2790..c0f393a 100644
--- a/service/src/com/android/car/BluetoothDeviceConnectionPolicy.java
+++ b/service/src/com/android/car/BluetoothDeviceConnectionPolicy.java
@@ -117,7 +117,7 @@
}
}
}
- private BluetoothBroadcastReceiver mBluetoothBroadcastReceiver;
+ private final BluetoothBroadcastReceiver mBluetoothBroadcastReceiver;
/**
* Create a new BluetoothDeviceConnectionPolicy object, responsible for encapsulating the
@@ -153,6 +153,7 @@
mUserId = userId;
mContext = Objects.requireNonNull(context);
mCarBluetoothService = bluetoothService;
+ mBluetoothBroadcastReceiver = new BluetoothBroadcastReceiver();
mBluetoothAdapter = Objects.requireNonNull(BluetoothAdapter.getDefaultAdapter());
}
@@ -160,9 +161,8 @@
* Setup the Bluetooth profile service connections and Vehicle Event listeners.
* and start the state machine -{@link BluetoothAutoConnectStateMachine}
*/
- public synchronized void init() {
+ public void init() {
logd("init()");
- mBluetoothBroadcastReceiver = new BluetoothBroadcastReceiver();
IntentFilter profileFilter = new IntentFilter();
profileFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
mContext.registerReceiverAsUser(mBluetoothBroadcastReceiver, UserHandle.CURRENT,
@@ -190,7 +190,7 @@
* Clean up slate. Close the Bluetooth profile service connections and quit the state machine -
* {@link BluetoothAutoConnectStateMachine}
*/
- public synchronized void release() {
+ public void release() {
logd("release()");
if (mCarPowerManager != null) {
mCarPowerManager.clearListener();
@@ -198,7 +198,6 @@
}
if (mBluetoothBroadcastReceiver != null) {
mContext.unregisterReceiver(mBluetoothBroadcastReceiver);
- mBluetoothBroadcastReceiver = null;
}
}
@@ -250,7 +249,7 @@
/**
* Print the verbose status of the object
*/
- public synchronized void dump(PrintWriter writer, String indent) {
+ public void dump(PrintWriter writer, String indent) {
writer.println(indent + TAG + ":");
writer.println(indent + "\tUserId: " + mUserId);
}