summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Song Chun Fan <schfan@google.com> 2025-03-03 14:55:01 -0800
committer Song Chun Fan <schfan@google.com> 2025-03-03 14:55:01 -0800
commitd1f6724b0a5adf4f6825c8c189d6b49d92dbf72f (patch)
treeb81686d7dff83a05e19eca9ad794398161a7d342
parent4d1f7dbabf2d1563630cba88834d0524b41a23ff (diff)
[SettingsProvider] hold PackageMonitor object
System server only holds a weak reference to PackageMonitor though PackageMonitorCallback. If there's nothing else holding on to PackageMonitor, it will get GC'd and following callbacks to it will be discarded. BUG: 398759145 TEST: manual FLAG: EXEMPT bug fix Change-Id: I9147b14bc040484b880aeb46de24f785db726de2
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java7
1 files changed, 5 insertions, 2 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index bc281eea39d8..4a225bdbd7e5 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -396,6 +396,8 @@ public class SettingsProvider extends ContentProvider {
private volatile SystemConfigManager mSysConfigManager;
+ private PackageMonitor mPackageMonitor;
+
@GuardedBy("mLock")
private boolean mSyncConfigDisabledUntilReboot;
@@ -403,6 +405,7 @@ public class SettingsProvider extends ContentProvider {
@EnabledSince(targetSdkVersion=android.os.Build.VERSION_CODES.S)
private static final long ENFORCE_READ_PERMISSION_FOR_MULTI_SIM_DATA_CALL = 172670679L;
+
@Override
public boolean onCreate() {
Settings.setInSystemServer();
@@ -1036,7 +1039,7 @@ public class SettingsProvider extends ContentProvider {
}
}, userFilter);
- PackageMonitor monitor = new PackageMonitor() {
+ mPackageMonitor = new PackageMonitor() {
@Override
public void onPackageRemoved(String packageName, int uid) {
synchronized (mLock) {
@@ -1062,7 +1065,7 @@ public class SettingsProvider extends ContentProvider {
};
// package changes
- monitor.register(getContext(), BackgroundThread.getHandler().getLooper(),
+ mPackageMonitor.register(getContext(), BackgroundThread.getHandler().getLooper(),
UserHandle.ALL, true);
}