Loading core/java/android/app/job/JobInfo.java +38 −2 Original line number Diff line number Diff line Loading @@ -200,12 +200,23 @@ public class JobInfo implements Parcelable { public static final int PRIORITY_SYNC_INITIALIZATION = 20; /** * Value of {@link #getPriority} for a foreground app (overrides the supplied * Value of {@link #getPriority} for a BFGS app (overrides the supplied * JobInfo priority if it is smaller). * @hide */ public static final int PRIORITY_BOUND_FOREGROUND_SERVICE = 30; /** @hide For backward compatibility. */ @UnsupportedAppUsage public static final int PRIORITY_FOREGROUND_APP = PRIORITY_BOUND_FOREGROUND_SERVICE; /** * Value of {@link #getPriority} for a FG service app (overrides the supplied * JobInfo priority if it is smaller). * @hide */ @UnsupportedAppUsage public static final int PRIORITY_FOREGROUND_APP = 30; public static final int PRIORITY_FOREGROUND_SERVICE = 35; /** * Value of {@link #getPriority} for the current top app (overrides the supplied Loading Loading @@ -1593,4 +1604,29 @@ public class JobInfo implements Parcelable { return new JobInfo(this); } } /** * Convert a priority integer into a human readable string for debugging. * @hide */ public static String getPriorityString(int priority) { switch (priority) { case PRIORITY_DEFAULT: return PRIORITY_DEFAULT + " [DEFAULT]"; case PRIORITY_SYNC_EXPEDITED: return PRIORITY_SYNC_EXPEDITED + " [SYNC_EXPEDITED]"; case PRIORITY_SYNC_INITIALIZATION: return PRIORITY_SYNC_INITIALIZATION + " [SYNC_INITIALIZATION]"; case PRIORITY_BOUND_FOREGROUND_SERVICE: return PRIORITY_BOUND_FOREGROUND_SERVICE + " [BFGS_APP]"; case PRIORITY_FOREGROUND_SERVICE: return PRIORITY_FOREGROUND_SERVICE + " [FGS_APP]"; case PRIORITY_TOP_APP: return PRIORITY_TOP_APP + " [TOP_APP]"; // PRIORITY_ADJ_* are adjustments and not used as real priorities. // No need to convert to strings. } return priority + " [UNKNOWN]"; } } services/core/java/com/android/server/job/JobSchedulerService.java +13 −16 Original line number Diff line number Diff line Loading @@ -1181,8 +1181,10 @@ public class JobSchedulerService extends com.android.server.SystemService // with just the foreground priority. This means that persistent processes // can never be the top app priority... that is fine. mUidPriorityOverride.put(uid, JobInfo.PRIORITY_TOP_APP); } else if (procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) { mUidPriorityOverride.put(uid, JobInfo.PRIORITY_FOREGROUND_SERVICE); } else if (procState <= ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE) { mUidPriorityOverride.put(uid, JobInfo.PRIORITY_FOREGROUND_APP); mUidPriorityOverride.put(uid, JobInfo.PRIORITY_BOUND_FOREGROUND_SERVICE); } else { mUidPriorityOverride.delete(uid); } Loading Loading @@ -2244,7 +2246,7 @@ public class JobSchedulerService extends com.android.server.SystemService int evaluateJobPriorityLocked(JobStatus job) { int priority = job.getPriority(); if (priority >= JobInfo.PRIORITY_FOREGROUND_APP) { if (priority >= JobInfo.PRIORITY_BOUND_FOREGROUND_SERVICE) { return adjustJobPriority(priority, job); } int override = mUidPriorityOverride.get(job.getSourceUid(), 0); Loading Loading @@ -3181,9 +3183,9 @@ public class JobSchedulerService extends com.android.server.SystemService pw.println(job.toShortString()); job.dump(pw, " ", false, nowElapsed); int priority = evaluateJobPriorityLocked(job); if (priority != JobInfo.PRIORITY_DEFAULT) { pw.print(" Evaluated priority: "); pw.println(priority); } pw.print(" Evaluated priority: "); pw.println(JobInfo.getPriorityString(priority)); pw.print(" Tag: "); pw.println(job.getTag()); pw.print(" Enq: "); TimeUtils.formatDuration(job.madePending - nowUptime, pw); Loading Loading @@ -3214,9 +3216,9 @@ public class JobSchedulerService extends com.android.server.SystemService pw.println(); job.dump(pw, " ", false, nowElapsed); int priority = evaluateJobPriorityLocked(jsc.getRunningJobLocked()); if (priority != JobInfo.PRIORITY_DEFAULT) { pw.print(" Evaluated priority: "); pw.println(priority); } pw.print(" Evaluated priority: "); pw.println(JobInfo.getPriorityString(priority)); pw.print(" Active at "); TimeUtils.formatDuration(job.madeActive - nowUptime, pw); pw.print(", pending for "); Loading Loading @@ -3335,10 +3337,7 @@ public class JobSchedulerService extends com.android.server.SystemService job.writeToShortProto(proto, PendingJob.INFO); job.dump(proto, PendingJob.DUMP, false, nowElapsed); int priority = evaluateJobPriorityLocked(job); if (priority != JobInfo.PRIORITY_DEFAULT) { proto.write(PendingJob.EVALUATED_PRIORITY, priority); } proto.write(PendingJob.EVALUATED_PRIORITY, evaluateJobPriorityLocked(job)); proto.write(PendingJob.ENQUEUED_DURATION_MS, nowUptime - job.madePending); proto.end(pjToken); Loading Loading @@ -3370,10 +3369,8 @@ public class JobSchedulerService extends com.android.server.SystemService job.dump(proto, ActiveJob.RunningJob.DUMP, false, nowElapsed); int priority = evaluateJobPriorityLocked(jsc.getRunningJobLocked()); if (priority != JobInfo.PRIORITY_DEFAULT) { proto.write(ActiveJob.RunningJob.EVALUATED_PRIORITY, priority); } proto.write(ActiveJob.RunningJob.EVALUATED_PRIORITY, evaluateJobPriorityLocked(jsc.getRunningJobLocked())); proto.write(ActiveJob.RunningJob.TIME_SINCE_MADE_ACTIVE_MS, nowUptime - job.madeActive); Loading services/core/java/com/android/server/job/controllers/JobStatus.java +2 −1 Original line number Diff line number Diff line Loading @@ -1321,7 +1321,8 @@ public final class JobStatus { pw.print(prefix); pw.println(" PERSISTED"); } if (job.getPriority() != 0) { pw.print(prefix); pw.print(" Priority: "); pw.println(job.getPriority()); pw.print(prefix); pw.print(" Priority: "); pw.println(JobInfo.getPriorityString(job.getPriority())); } if (job.getFlags() != 0) { pw.print(prefix); pw.print(" Flags: "); Loading Loading
core/java/android/app/job/JobInfo.java +38 −2 Original line number Diff line number Diff line Loading @@ -200,12 +200,23 @@ public class JobInfo implements Parcelable { public static final int PRIORITY_SYNC_INITIALIZATION = 20; /** * Value of {@link #getPriority} for a foreground app (overrides the supplied * Value of {@link #getPriority} for a BFGS app (overrides the supplied * JobInfo priority if it is smaller). * @hide */ public static final int PRIORITY_BOUND_FOREGROUND_SERVICE = 30; /** @hide For backward compatibility. */ @UnsupportedAppUsage public static final int PRIORITY_FOREGROUND_APP = PRIORITY_BOUND_FOREGROUND_SERVICE; /** * Value of {@link #getPriority} for a FG service app (overrides the supplied * JobInfo priority if it is smaller). * @hide */ @UnsupportedAppUsage public static final int PRIORITY_FOREGROUND_APP = 30; public static final int PRIORITY_FOREGROUND_SERVICE = 35; /** * Value of {@link #getPriority} for the current top app (overrides the supplied Loading Loading @@ -1593,4 +1604,29 @@ public class JobInfo implements Parcelable { return new JobInfo(this); } } /** * Convert a priority integer into a human readable string for debugging. * @hide */ public static String getPriorityString(int priority) { switch (priority) { case PRIORITY_DEFAULT: return PRIORITY_DEFAULT + " [DEFAULT]"; case PRIORITY_SYNC_EXPEDITED: return PRIORITY_SYNC_EXPEDITED + " [SYNC_EXPEDITED]"; case PRIORITY_SYNC_INITIALIZATION: return PRIORITY_SYNC_INITIALIZATION + " [SYNC_INITIALIZATION]"; case PRIORITY_BOUND_FOREGROUND_SERVICE: return PRIORITY_BOUND_FOREGROUND_SERVICE + " [BFGS_APP]"; case PRIORITY_FOREGROUND_SERVICE: return PRIORITY_FOREGROUND_SERVICE + " [FGS_APP]"; case PRIORITY_TOP_APP: return PRIORITY_TOP_APP + " [TOP_APP]"; // PRIORITY_ADJ_* are adjustments and not used as real priorities. // No need to convert to strings. } return priority + " [UNKNOWN]"; } }
services/core/java/com/android/server/job/JobSchedulerService.java +13 −16 Original line number Diff line number Diff line Loading @@ -1181,8 +1181,10 @@ public class JobSchedulerService extends com.android.server.SystemService // with just the foreground priority. This means that persistent processes // can never be the top app priority... that is fine. mUidPriorityOverride.put(uid, JobInfo.PRIORITY_TOP_APP); } else if (procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) { mUidPriorityOverride.put(uid, JobInfo.PRIORITY_FOREGROUND_SERVICE); } else if (procState <= ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE) { mUidPriorityOverride.put(uid, JobInfo.PRIORITY_FOREGROUND_APP); mUidPriorityOverride.put(uid, JobInfo.PRIORITY_BOUND_FOREGROUND_SERVICE); } else { mUidPriorityOverride.delete(uid); } Loading Loading @@ -2244,7 +2246,7 @@ public class JobSchedulerService extends com.android.server.SystemService int evaluateJobPriorityLocked(JobStatus job) { int priority = job.getPriority(); if (priority >= JobInfo.PRIORITY_FOREGROUND_APP) { if (priority >= JobInfo.PRIORITY_BOUND_FOREGROUND_SERVICE) { return adjustJobPriority(priority, job); } int override = mUidPriorityOverride.get(job.getSourceUid(), 0); Loading Loading @@ -3181,9 +3183,9 @@ public class JobSchedulerService extends com.android.server.SystemService pw.println(job.toShortString()); job.dump(pw, " ", false, nowElapsed); int priority = evaluateJobPriorityLocked(job); if (priority != JobInfo.PRIORITY_DEFAULT) { pw.print(" Evaluated priority: "); pw.println(priority); } pw.print(" Evaluated priority: "); pw.println(JobInfo.getPriorityString(priority)); pw.print(" Tag: "); pw.println(job.getTag()); pw.print(" Enq: "); TimeUtils.formatDuration(job.madePending - nowUptime, pw); Loading Loading @@ -3214,9 +3216,9 @@ public class JobSchedulerService extends com.android.server.SystemService pw.println(); job.dump(pw, " ", false, nowElapsed); int priority = evaluateJobPriorityLocked(jsc.getRunningJobLocked()); if (priority != JobInfo.PRIORITY_DEFAULT) { pw.print(" Evaluated priority: "); pw.println(priority); } pw.print(" Evaluated priority: "); pw.println(JobInfo.getPriorityString(priority)); pw.print(" Active at "); TimeUtils.formatDuration(job.madeActive - nowUptime, pw); pw.print(", pending for "); Loading Loading @@ -3335,10 +3337,7 @@ public class JobSchedulerService extends com.android.server.SystemService job.writeToShortProto(proto, PendingJob.INFO); job.dump(proto, PendingJob.DUMP, false, nowElapsed); int priority = evaluateJobPriorityLocked(job); if (priority != JobInfo.PRIORITY_DEFAULT) { proto.write(PendingJob.EVALUATED_PRIORITY, priority); } proto.write(PendingJob.EVALUATED_PRIORITY, evaluateJobPriorityLocked(job)); proto.write(PendingJob.ENQUEUED_DURATION_MS, nowUptime - job.madePending); proto.end(pjToken); Loading Loading @@ -3370,10 +3369,8 @@ public class JobSchedulerService extends com.android.server.SystemService job.dump(proto, ActiveJob.RunningJob.DUMP, false, nowElapsed); int priority = evaluateJobPriorityLocked(jsc.getRunningJobLocked()); if (priority != JobInfo.PRIORITY_DEFAULT) { proto.write(ActiveJob.RunningJob.EVALUATED_PRIORITY, priority); } proto.write(ActiveJob.RunningJob.EVALUATED_PRIORITY, evaluateJobPriorityLocked(jsc.getRunningJobLocked())); proto.write(ActiveJob.RunningJob.TIME_SINCE_MADE_ACTIVE_MS, nowUptime - job.madeActive); Loading
services/core/java/com/android/server/job/controllers/JobStatus.java +2 −1 Original line number Diff line number Diff line Loading @@ -1321,7 +1321,8 @@ public final class JobStatus { pw.print(prefix); pw.println(" PERSISTED"); } if (job.getPriority() != 0) { pw.print(prefix); pw.print(" Priority: "); pw.println(job.getPriority()); pw.print(prefix); pw.print(" Priority: "); pw.println(JobInfo.getPriorityString(job.getPriority())); } if (job.getFlags() != 0) { pw.print(prefix); pw.print(" Flags: "); Loading