AdapterService: Only bind HeadsetService in ON state.
* there will be an endless loop to call doBind and cause many connectionRecords of HeadsetService while binding HeadsetService in BLE_ON state.
* allow to bind HeadsetService only when BT state is ON
Bug: 111730478
Bug: 121024323
Test: Keep device in BLE_ON state -> kill com.android.phone process
-> As time goes on, adb shell dumpsys activity services to check the connectionRecords of HeadsetService will not become more and more
Change-Id: I5f66d015b8aa3c94c7e887ef033213af74235b4a
This commit is contained in:
@@ -1174,6 +1174,26 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
|
||||
}
|
||||
|
||||
private boolean bindService() {
|
||||
int state = BluetoothAdapter.STATE_OFF;
|
||||
try {
|
||||
mBluetoothLock.readLock().lock();
|
||||
if (mBluetooth != null) {
|
||||
state = mBluetooth.getState();
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(TAG, "Unable to call getState", e);
|
||||
return false;
|
||||
} finally {
|
||||
mBluetoothLock.readLock().unlock();
|
||||
}
|
||||
|
||||
if (!mEnable || state != BluetoothAdapter.STATE_ON) {
|
||||
if (DBG) {
|
||||
Slog.d(TAG, "Unable to bindService while Bluetooth is disabled");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mIntent != null && mService == null && doBind(mIntent, this, 0,
|
||||
UserHandle.CURRENT_OR_SELF)) {
|
||||
Message msg = mHandler.obtainMessage(MESSAGE_BIND_PROFILE_SERVICE);
|
||||
|
||||
Reference in New Issue
Block a user