From f29545d1142573b33fe8285098a15db3ad0d9da9 Mon Sep 17 00:00:00 2001 From: Kweku Adams Date: Tue, 23 Jun 2020 10:36:12 -0700 Subject: [PATCH] Postpone headless app caching to after boot. Moving the headless app cache loading to the background thread still affects boot time. Moving the loading to after boot has completed means that it will no longer impact boot time. Bug: 159057406 Bug: 159434503 Test: atest CtsUsageStatsTestCases:UsageStatsTest Test: atest FrameworksServicesTests:AppIdleHistoryTests Test: atest FrameworksServicesTests:AppStandbyControllerTests Test: Confirm SystemServerTiming_OnBootPhase_500_com.android.server.BinderCallsStatsService$LifeCycle timing decreases Change-Id: Ib79939ed15f9886d4fea02f7eda172b8cc82b674 --- .../com/android/server/usage/AppStandbyController.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java index 687b1d4e0bde5..f36084386f486 100644 --- a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java +++ b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java @@ -463,9 +463,6 @@ public class AppStandbyController implements AppStandbyInternal { userFileExists = mAppIdleHistory.userFileExists(UserHandle.USER_SYSTEM); } - // Offload to handler thread to avoid boottime impact. - mHandler.post(this::loadHeadlessSystemAppCache); - if (mPendingInitializeDefaults || !userFileExists) { initializeDefaultsForSystemApps(UserHandle.USER_SYSTEM); } @@ -475,6 +472,10 @@ public class AppStandbyController implements AppStandbyInternal { } } else if (phase == PHASE_BOOT_COMPLETED) { setChargingState(mInjector.isCharging()); + + // Offload to handler thread after boot completed to avoid boot time impact. This means + // that headless system apps may be put in a lower bucket until boot has completed. + mHandler.post(this::loadHeadlessSystemAppCache); } }