Merge "fix broadcast receivers overflow for system_server" am: 9ba1a0d576 am: ad9467332c

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1339995

Change-Id: Icad186f7a973ebf08a7b506561573a963d762d49
This commit is contained in:
Philip P. Moltmann
2020-10-14 21:42:28 +00:00
committed by Automerger Merge Worker
3 changed files with 17 additions and 2 deletions

View File

@@ -64,12 +64,13 @@ class MtpNotificationManager {
private final Context mContext;
private final OnOpenInAppListener mListener;
private final Receiver mReceiver;
MtpNotificationManager(Context context, OnOpenInAppListener listener) {
mContext = context;
mListener = listener;
final Receiver receiver = new Receiver();
context.registerReceiver(receiver, new IntentFilter(ACTION_OPEN_IN_APPS));
mReceiver = new Receiver();
context.registerReceiver(mReceiver, new IntentFilter(ACTION_OPEN_IN_APPS));
}
void showNotification(UsbDevice device) {
@@ -154,4 +155,8 @@ class MtpNotificationManager {
static interface OnOpenInAppListener {
void onOpenInApp(UsbDevice device);
}
public void unregister() {
mContext.unregisterReceiver(mReceiver);
}
}

View File

@@ -260,6 +260,15 @@ class UsbProfileGroupSettingsManager {
mUsbHandlerManager = usbResolveActivityManager;
}
/**
* Unregister all broadcast receivers. Must be called explicitly before
* object deletion.
*/
public void unregisterReceivers() {
mPackageMonitor.unregister();
mMtpNotificationManager.unregister();
}
/**
* Remove all defaults and denied packages for a user.
*

View File

@@ -124,6 +124,7 @@ class UsbSettingsManager {
if (mSettingsByProfileGroup.indexOfKey(userToRemove.getIdentifier()) >= 0) {
// The user to remove is the parent user of the group. The parent is the last user
// that gets removed. All state will be removed with the user
mSettingsByProfileGroup.get(userToRemove.getIdentifier()).unregisterReceivers();
mSettingsByProfileGroup.remove(userToRemove.getIdentifier());
} else {
// We cannot find the parent user of the user that is removed, hence try to remove