diff options
| author | 2025-03-03 14:55:01 -0800 | |
|---|---|---|
| committer | 2025-03-03 14:55:01 -0800 | |
| commit | d1f6724b0a5adf4f6825c8c189d6b49d92dbf72f (patch) | |
| tree | b81686d7dff83a05e19eca9ad794398161a7d342 | |
| parent | 4d1f7dbabf2d1563630cba88834d0524b41a23ff (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.java | 7 |
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); } |