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

Commit d1f6724b authored by Song Chun Fan's avatar Song Chun Fan
Browse files

[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
parent 4d1f7dba
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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);
    }