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

Commit 94580df0 authored by Danning Chen's avatar Danning Chen
Browse files

Move the initialization of Call/SMS/MMS content observers out of the DataManager constructor

This change is to speed up the system boot time. The people service
start time will be reduced from ~1.5 ms to ~0.5 ms.

Bug: 149245782
Test: Manual run with System.nanoTime() logged
Change-Id: I9114b3c9e3637b2498618220665cd98df1d1f994
parent ac21f749
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -101,8 +101,8 @@ public class DataManager {
    private final SparseArray<NotificationListenerService> mNotificationListeners =
            new SparseArray<>();
    private final SparseArray<PackageMonitor> mPackageMonitors = new SparseArray<>();
    private final ContentObserver mCallLogContentObserver;
    private final ContentObserver mMmsSmsContentObserver;
    private ContentObserver mCallLogContentObserver;
    private ContentObserver mMmsSmsContentObserver;

    private ShortcutServiceInternal mShortcutServiceInternal;
    private PackageManagerInternal mPackageManagerInternal;
@@ -118,10 +118,6 @@ public class DataManager {
        mContext = context;
        mInjector = injector;
        mUsageStatsQueryExecutor = mInjector.createScheduledExecutor();
        mCallLogContentObserver = new CallLogContentObserver(
                BackgroundThread.getHandler());
        mMmsSmsContentObserver = new MmsSmsContentObserver(
                BackgroundThread.getHandler());
        mDiskReadWriterExecutor = mInjector.createScheduledExecutor();
    }

@@ -189,9 +185,12 @@ public class DataManager {
            // The call log and MMS/SMS messages are shared across user profiles. So only need to
            // register the content observers once for the primary user.
            // TODO: Register observers after the conversations and events being loaded from disk.
            mCallLogContentObserver = new CallLogContentObserver(BackgroundThread.getHandler());
            mContext.getContentResolver().registerContentObserver(
                    CallLog.CONTENT_URI, /* notifyForDescendants= */ true,
                    mCallLogContentObserver, UserHandle.USER_SYSTEM);

            mMmsSmsContentObserver = new MmsSmsContentObserver(BackgroundThread.getHandler());
            mContext.getContentResolver().registerContentObserver(
                    MmsSms.CONTENT_URI, /* notifyForDescendants= */ false,
                    mMmsSmsContentObserver, UserHandle.USER_SYSTEM);
@@ -226,8 +225,14 @@ public class DataManager {
            mPackageMonitors.get(userId).unregister();
        }
        if (userId == UserHandle.USER_SYSTEM) {
            if (mCallLogContentObserver != null) {
                mContext.getContentResolver().unregisterContentObserver(mCallLogContentObserver);
                mCallLogContentObserver = null;
            }
            if (mMmsSmsContentObserver != null) {
                mContext.getContentResolver().unregisterContentObserver(mMmsSmsContentObserver);
                mCallLogContentObserver = null;
            }
        }

        DataMaintenanceService.cancelJob(mContext, userId);