From d1d8aa66b3980ae0ae40798860bec482080a39bc Mon Sep 17 00:00:00 2001 From: Michael Wachenschwanz Date: Thu, 28 Feb 2019 16:38:37 -0800 Subject: [PATCH] Persist Standby Buckets after System defaults set Also repair defaults if persisted file is missing on boot. Fixes: 123206562 Test: manual ("adb shell reboot" within 20 min of a fresh wipe "adb shell dumpsys usagestats" System apps bucket levels equal 10) Change-Id: I0403099c899d181ef6206cc9f5516c25213edc9c --- .../java/com/android/server/usage/AppIdleHistory.java | 10 ++++++++++ .../com/android/server/usage/AppStandbyController.java | 9 ++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/services/usage/java/com/android/server/usage/AppIdleHistory.java b/services/usage/java/com/android/server/usage/AppIdleHistory.java index bc54a5d2c499d..1e4861a896940 100644 --- a/services/usage/java/com/android/server/usage/AppIdleHistory.java +++ b/services/usage/java/com/android/server/usage/AppIdleHistory.java @@ -508,6 +508,16 @@ public class AppIdleHistory { Integer.toString(userId)), APP_IDLE_FILENAME); } + + /** + * Check if App Idle File exists on disk + * @param userId + * @return true if file exists + */ + public boolean userFileExists(int userId) { + return getUserFile(userId).exists(); + } + private void readAppIdleTimes(int userId, ArrayMap userHistory) { FileInputStream fis = null; try { diff --git a/services/usage/java/com/android/server/usage/AppStandbyController.java b/services/usage/java/com/android/server/usage/AppStandbyController.java index 65ed85db17bd5..bcab961cb7fcb 100644 --- a/services/usage/java/com/android/server/usage/AppStandbyController.java +++ b/services/usage/java/com/android/server/usage/AppStandbyController.java @@ -372,7 +372,12 @@ public class AppStandbyController { mSystemServicesReady = true; - if (mPendingInitializeDefaults) { + boolean userFileExists; + synchronized (mAppIdleLock) { + userFileExists = mAppIdleHistory.userFileExists(UserHandle.USER_SYSTEM); + } + + if (mPendingInitializeDefaults || !userFileExists) { initializeDefaultsForSystemApps(UserHandle.USER_SYSTEM); } @@ -1411,6 +1416,8 @@ public class AppStandbyController { elapsedRealtime + mSystemUpdateUsageTimeoutMillis); } } + // Immediately persist defaults to disk + mAppIdleHistory.writeAppIdleTimes(userId); } }