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 ffafb6d0800e7..4b33e165bfebe 100644 --- a/services/usage/java/com/android/server/usage/AppStandbyController.java +++ b/services/usage/java/com/android/server/usage/AppStandbyController.java @@ -377,7 +377,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); } @@ -1435,6 +1440,8 @@ public class AppStandbyController { elapsedRealtime + mSystemUpdateUsageTimeoutMillis); } } + // Immediately persist defaults to disk + mAppIdleHistory.writeAppIdleTimes(userId); } }