diff options
| -rw-r--r-- | apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java | 1 | ||||
| -rw-r--r-- | apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java | 18 |
2 files changed, 14 insertions, 5 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 80f3fea1907c..c90291e5f264 100644 --- a/apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java +++ b/apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java @@ -979,6 +979,7 @@ public class AppIdleHistory { dumpBucketExpiryTimes(idpw, appUsageHistory, totalElapsedTime); idpw.print(" lastJob="); TimeUtils.formatDuration(totalElapsedTime - appUsageHistory.lastJobRunTime, idpw); + idpw.print(" lastInformedBucket=" + appUsageHistory.lastInformedBucket); if (appUsageHistory.lastRestrictAttemptElapsedTime > 0) { idpw.print(" lastRestrictAttempt="); TimeUtils.formatDuration( 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 c3d6b738fc1e..1891e06a9420 100644 --- a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java +++ b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java @@ -1155,6 +1155,12 @@ public class AppStandbyController final int appId = getAppId(packageName); if (appId < 0) return; + final int minBucket = getAppMinBucket(packageName, appId, userId); + if (idle && minBucket < AppIdleHistory.IDLE_BUCKET_CUTOFF) { + Slog.e(TAG, "Tried to force an app to be idle when its min bucket is " + + standbyBucketToString(minBucket)); + return; + } final long elapsedRealtime = mInjector.elapsedRealtime(); final boolean previouslyIdle = isAppIdleFiltered(packageName, appId, @@ -1166,12 +1172,10 @@ public class AppStandbyController final boolean stillIdle = isAppIdleFiltered(packageName, appId, userId, elapsedRealtime); // Inform listeners if necessary + maybeInformListeners(packageName, userId, elapsedRealtime, standbyBucket, + REASON_MAIN_FORCED_BY_USER, false); if (previouslyIdle != stillIdle) { - maybeInformListeners(packageName, userId, elapsedRealtime, standbyBucket, - REASON_MAIN_FORCED_BY_USER, false); - if (!stillIdle) { - notifyBatteryStats(packageName, userId, idle); - } + notifyBatteryStats(packageName, userId, stillIdle); } } @@ -1934,6 +1938,8 @@ public class AppStandbyController } mAppIdleHistory.setAppStandbyBucket( packageName, userId, elapsedRealtime, newBucket, newReason); + maybeInformListeners(packageName, userId, elapsedRealtime, newBucket, + newReason, false); } } @@ -2490,6 +2496,8 @@ public class AppStandbyController public void handleMessage(Message msg) { switch (msg.what) { case MSG_INFORM_LISTENERS: + // TODO(230875908): Properly notify BatteryStats when apps change from active to + // idle, and vice versa StandbyUpdateRecord r = (StandbyUpdateRecord) msg.obj; informListeners(r.packageName, r.userId, r.bucket, r.reason, r.isUserInteraction); |