summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sudheer Shanka <sudheersai@google.com> 2022-03-24 20:30:31 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-03-24 20:30:31 +0000
commitf0692adb89ecb0430ac50ee059310c81e071be15 (patch)
tree07b4f83ee3c0ad043a2311804514b78d2bbfffeb
parent574ae112d9f4b776886ed3ecb454da1d18f16e83 (diff)
parent2372176762b55d5287a8b26564a762250d2db57a (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.java18
-rw-r--r--apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java10
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) {