diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java b/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java index af9771553063d..e8e2c27f1554c 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java @@ -753,13 +753,22 @@ class JobConcurrencyManager { return null; } + // We're over the minimum guaranteed runtime. Stop the job if we're over config limits, + // there are pending jobs that could replace this one, or the device state is not conducive + // to long runs. + + if (mPowerManager.isPowerSaveMode()) { + return "battery saver"; + } + if (mPowerManager.isDeviceIdleMode()) { + return "deep doze"; + } + // Update config in case memory usage has changed significantly. updateCounterConfigLocked(); @WorkType final int workType = context.getRunningJobWorkType(); - // We're over the minimum guaranteed runtime. Stop the job if we're over config limits or - // there are pending jobs that could replace this one. if (mRunningJobs.size() > mWorkTypeConfig.getMaxTotal() || mWorkCountTracker.isOverTypeLimit(workType)) { return "too many jobs running"; @@ -786,13 +795,6 @@ class JobConcurrencyManager { return "blocking " + workTypeToString(workType) + " queue"; } } - - if (mPowerManager.isPowerSaveMode()) { - return "battery saver"; - } - if (mPowerManager.isDeviceIdleMode()) { - return "deep doze"; - } } // Easy check. If there are pending jobs of the same work type, then we know that