summaryrefslogtreecommitdiff
path: root/framework/java/android/bluetooth/BluetoothHeadset.java
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2021-05-24 10:00:23 -0600
committerJeff Sharkey <jsharkey@android.com>2021-06-03 15:38:17 -0600
commitdb38eb73db2ffef87bcab51aa8ceb7d6fa6a3ca0 (patch)
treee504c5569493bf95a0e7e7b000bca16ae0f6d854 /framework/java/android/bluetooth/BluetoothHeadset.java
parent0cc9fe2cb3763a0f76e3d6078724edc73c3a9a40 (diff)
CloseGuard for more Bluetooth components.
We've seen evidence of IBluetoothProfileServiceConnection and IBluetoothStateChangeCallback references being leaked, so attempt to unregister them when an object is finalized without closing. Bug: 189091551 Test: manual Change-Id: I23792d48d94578acd7fc7a5164a95171801ee721
Diffstat (limited to 'framework/java/android/bluetooth/BluetoothHeadset.java')
-rw-r--r--framework/java/android/bluetooth/BluetoothHeadset.java12
1 files changed, 12 insertions, 0 deletions
diff --git a/framework/java/android/bluetooth/BluetoothHeadset.java b/framework/java/android/bluetooth/BluetoothHeadset.java
index 3bf517c046..5be8326949 100644
--- a/framework/java/android/bluetooth/BluetoothHeadset.java
+++ b/framework/java/android/bluetooth/BluetoothHeadset.java
@@ -39,6 +39,7 @@ import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
+import android.util.CloseGuard;
import android.util.Log;
import java.util.ArrayList;
@@ -338,6 +339,8 @@ public final class BluetoothHeadset implements BluetoothProfile {
private static final int MESSAGE_HEADSET_SERVICE_CONNECTED = 100;
private static final int MESSAGE_HEADSET_SERVICE_DISCONNECTED = 101;
+ private final CloseGuard mCloseGuard = new CloseGuard();
+
private Context mContext;
private ServiceListener mServiceListener;
private volatile IBluetoothHeadset mService;
@@ -385,6 +388,7 @@ public final class BluetoothHeadset implements BluetoothProfile {
}
doBind();
+ mCloseGuard.open("close");
}
private boolean doBind() {
@@ -438,6 +442,14 @@ public final class BluetoothHeadset implements BluetoothProfile {
}
mServiceListener = null;
doUnbind();
+ mCloseGuard.close();
+ }
+
+ /** {@hide} */
+ @Override
+ protected void finalize() throws Throwable {
+ mCloseGuard.warnIfOpen();
+ close();
}
/**