Merge "fix broadcast receivers overflow for system_server" am: 9ba1a0d576 am: ad9467332c am: ea66dd6ca5
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1339995 Change-Id: Ibf885fb006911469005ea075e60f8c2d3e8dc8e7
This commit is contained in:
committed by
Automerger Merge Worker
commit
a942c4780f
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user