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

Commit 8cb2dcf0 authored by Android Build Merger (Role)'s avatar Android Build Merger (Role) Committed by Android (Google) Code Review
Browse files

Merge "Merge "Settings: Fix leak of BroadcastReceiver intents" am: 3499af28...

Merge "Merge "Settings: Fix leak of BroadcastReceiver intents" am: 3499af28 am: 1b4a0abd am: 517b35fa am: d2ff3244"
parents d2df1ce3 ee36f6fe
Loading
Loading
Loading
Loading
+23 −1
Original line number Original line Diff line number Diff line
@@ -107,14 +107,16 @@ public class BluetoothEventManager {
        addHandler(Intent.ACTION_DOCK_EVENT, new DockEventHandler());
        addHandler(Intent.ACTION_DOCK_EVENT, new DockEventHandler());


        mContext.registerReceiver(mBroadcastReceiver, mAdapterIntentFilter, null, mReceiverHandler);
        mContext.registerReceiver(mBroadcastReceiver, mAdapterIntentFilter, null, mReceiverHandler);
        mContext.registerReceiver(mProfileBroadcastReceiver, mProfileIntentFilter, null, mReceiverHandler);
    }
    }


    void registerProfileIntentReceiver() {
    void registerProfileIntentReceiver() {
        mContext.registerReceiver(mBroadcastReceiver, mProfileIntentFilter, null, mReceiverHandler);
        mContext.registerReceiver(mProfileBroadcastReceiver, mProfileIntentFilter, null, mReceiverHandler);
    }
    }


    public void setReceiverHandler(android.os.Handler handler) {
    public void setReceiverHandler(android.os.Handler handler) {
        mContext.unregisterReceiver(mBroadcastReceiver);
        mContext.unregisterReceiver(mBroadcastReceiver);
        mContext.unregisterReceiver(mProfileBroadcastReceiver);
        mReceiverHandler = handler;
        mReceiverHandler = handler;
        mContext.registerReceiver(mBroadcastReceiver, mAdapterIntentFilter, null, mReceiverHandler);
        mContext.registerReceiver(mBroadcastReceiver, mAdapterIntentFilter, null, mReceiverHandler);
        registerProfileIntentReceiver();
        registerProfileIntentReceiver();
@@ -148,11 +150,31 @@ public class BluetoothEventManager {
        }
        }
    };
    };


    private final BroadcastReceiver mProfileBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            BluetoothDevice device = intent
                    .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

            Handler handler = mHandlerMap.get(action);
            if (handler != null) {
                handler.onReceive(context, intent, device);
            }
        }
    };

    private class AdapterStateChangedHandler implements Handler {
    private class AdapterStateChangedHandler implements Handler {
        public void onReceive(Context context, Intent intent,
        public void onReceive(Context context, Intent intent,
                BluetoothDevice device) {
                BluetoothDevice device) {
            int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
            int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
                                    BluetoothAdapter.ERROR);
                                    BluetoothAdapter.ERROR);
            // Reregister Profile Broadcast Receiver as part of TURN OFF
            if (state == BluetoothAdapter.STATE_OFF)
            {
                context.unregisterReceiver(mProfileBroadcastReceiver);
                registerProfileIntentReceiver();
            }
            // update local profiles and get paired devices
            // update local profiles and get paired devices
            mLocalAdapter.setBluetoothStateInt(state);
            mLocalAdapter.setBluetoothStateInt(state);
            // send callback to update UI and possibly start scanning
            // send callback to update UI and possibly start scanning