Merge "CloseGuard for more Bluetooth components." into sc-dev
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -26,6 +26,7 @@ import android.os.Build;
|
||||
import android.os.IBinder;
|
||||
import android.os.RemoteException;
|
||||
import android.os.UserHandle;
|
||||
import android.util.CloseGuard;
|
||||
import android.util.Log;
|
||||
|
||||
/**
|
||||
@@ -36,6 +37,7 @@ import android.util.Log;
|
||||
*/
|
||||
@SuppressLint("AndroidFrameworkBluetoothPermission")
|
||||
public abstract class BluetoothProfileConnector<T> {
|
||||
private final CloseGuard mCloseGuard = new CloseGuard();
|
||||
private final int mProfileId;
|
||||
private BluetoothProfile.ServiceListener mServiceListener;
|
||||
private final BluetoothProfile mProfileProxy;
|
||||
@@ -82,11 +84,19 @@ public abstract class BluetoothProfileConnector<T> {
|
||||
mServiceName = serviceName;
|
||||
}
|
||||
|
||||
/** {@hide} */
|
||||
@Override
|
||||
public void finalize() {
|
||||
mCloseGuard.warnIfOpen();
|
||||
doUnbind();
|
||||
}
|
||||
|
||||
@SuppressLint("AndroidFrameworkRequiresPermission")
|
||||
private boolean doBind() {
|
||||
synchronized (mConnection) {
|
||||
if (mService == null) {
|
||||
logDebug("Binding service...");
|
||||
mCloseGuard.open("doUnbind");
|
||||
try {
|
||||
Intent intent = new Intent(mServiceName);
|
||||
ComponentName comp = intent.resolveSystemService(
|
||||
@@ -110,6 +120,7 @@ public abstract class BluetoothProfileConnector<T> {
|
||||
synchronized (mConnection) {
|
||||
if (mService != null) {
|
||||
logDebug("Unbinding service...");
|
||||
mCloseGuard.close();
|
||||
try {
|
||||
mContext.unbindService(mConnection);
|
||||
} catch (IllegalArgumentException ie) {
|
||||
|
||||
Reference in New Issue
Block a user