Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2d006b8a authored by jonerlin's avatar jonerlin Committed by Jack He
Browse files

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
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
parent bd6fc9a8
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -1161,6 +1161,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);