diff options
| author | 2022-03-24 20:30:31 +0000 | |
|---|---|---|
| committer | 2022-03-24 20:30:31 +0000 | |
| commit | f0692adb89ecb0430ac50ee059310c81e071be15 (patch) | |
| tree | 07b4f83ee3c0ad043a2311804514b78d2bbfffeb | |
| parent | 574ae112d9f4b776886ed3ecb454da1d18f16e83 (diff) | |
| parent | 2372176762b55d5287a8b26564a762250d2db57a (diff) | |
Merge "Ensure standby bucket of an unused app gets treated correctly." into tm-dev
| -rw-r--r-- | apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java | 18 | ||||
| -rw-r--r-- | apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java | 10 |
2 files changed, 13 insertions, 15 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java b/apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java index 7db358c816c5..80f3fea1907c 100644 --- a/apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java +++ b/apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java @@ -623,7 +623,8 @@ public class AppIdleHistory { * @param elapsedRealtime current time * @param screenTimeThresholds Array of screen times, in ascending order, first one is 0 * @param elapsedTimeThresholds Array of elapsed time, in ascending order, first one is 0 - * @return The index whose values the app's used time exceeds (in both arrays) + * @return The index whose values the app's used time exceeds (in both arrays) or {@code -1} to + * indicate that the app has never been used. */ int getThresholdIndex(String packageName, int userId, long elapsedRealtime, long[] screenTimeThresholds, long[] elapsedTimeThresholds) { @@ -631,14 +632,13 @@ public class AppIdleHistory { AppUsageHistory appUsageHistory = getPackageHistory(userHistory, packageName, elapsedRealtime, false); // If we don't have any state for the app, assume never used - if (appUsageHistory == null) return screenTimeThresholds.length - 1; - - long screenOnDelta = appUsageHistory.lastUsedScreenTime >= 0 - ? getScreenOnTime(elapsedRealtime) - appUsageHistory.lastUsedScreenTime - : Long.MAX_VALUE; - long elapsedDelta = appUsageHistory.lastUsedElapsedTime >= 0 - ? getElapsedTime(elapsedRealtime) - appUsageHistory.lastUsedElapsedTime - : Long.MAX_VALUE; + if (appUsageHistory == null || appUsageHistory.lastUsedElapsedTime < 0 + || appUsageHistory.lastUsedScreenTime < 0) { + return -1; + } + + long screenOnDelta = getScreenOnTime(elapsedRealtime) - appUsageHistory.lastUsedScreenTime; + long elapsedDelta = getElapsedTime(elapsedRealtime) - appUsageHistory.lastUsedElapsedTime; if (DEBUG) Slog.d(TAG, packageName + " lastUsedScreen=" + appUsageHistory.lastUsedScreenTime 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 0839faa79314..1e4ecc2adfb2 100644 --- a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java +++ b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java @@ -898,11 +898,9 @@ public class AppStandbyController } } - final long elapsedLastUsedByUserTimeDelta = app.lastUsedByUserElapsedTime >= 0 - ? elapsedTimeAdjusted - app.lastUsedByUserElapsedTime - : Long.MAX_VALUE; - if (app.lastRestrictAttemptElapsedTime > app.lastUsedByUserElapsedTime - && elapsedLastUsedByUserTimeDelta + if (app.lastUsedByUserElapsedTime >= 0 + && app.lastRestrictAttemptElapsedTime > app.lastUsedByUserElapsedTime + && elapsedTimeAdjusted - app.lastUsedByUserElapsedTime >= mInjector.getAutoRestrictedBucketDelayMs()) { newBucket = STANDBY_BUCKET_RESTRICTED; reason = app.lastRestrictReason; @@ -974,7 +972,7 @@ public class AppStandbyController long elapsedRealtime) { int bucketIndex = mAppIdleHistory.getThresholdIndex(packageName, userId, elapsedRealtime, mAppStandbyScreenThresholds, mAppStandbyElapsedThresholds); - return THRESHOLD_BUCKETS[bucketIndex]; + return bucketIndex >= 0 ? THRESHOLD_BUCKETS[bucketIndex] : STANDBY_BUCKET_NEVER; } private void notifyBatteryStats(String packageName, int userId, boolean idle) { |