Loading services/core/java/com/android/server/job/JobPackageTracker.java +14 −6 Original line number Diff line number Diff line Loading @@ -58,14 +58,17 @@ public final class JobPackageTracker { private final int[] mEventUids = new int[EVENT_BUFFER_SIZE]; private final String[] mEventTags = new String[EVENT_BUFFER_SIZE]; private final int[] mEventJobIds = new int[EVENT_BUFFER_SIZE]; private final String[] mEventReasons = new String[EVENT_BUFFER_SIZE]; public void addEvent(int cmd, int uid, String tag, int jobId, int stopReason) { public void addEvent(int cmd, int uid, String tag, int jobId, int stopReason, String debugReason) { int index = mEventIndices.add(); mEventCmds[index] = cmd | ((stopReason<<EVENT_STOP_REASON_SHIFT) & EVENT_STOP_REASON_MASK); mEventTimes[index] = sElapsedRealtimeClock.millis(); mEventUids[index] = uid; mEventTags[index] = tag; mEventJobIds[index] = jobId; mEventReasons[index] = debugReason; } DataSet mCurDataSet = new DataSet(); Loading Loading @@ -470,10 +473,10 @@ public final class JobPackageTracker { mCurDataSet.incActive(job.getSourceUid(), job.getSourcePackageName(), now); } addEvent(job.getJob().isPeriodic() ? EVENT_START_PERIODIC_JOB : EVENT_START_JOB, job.getSourceUid(), job.getBatteryName(), job.getJobId(), 0); job.getSourceUid(), job.getBatteryName(), job.getJobId(), 0, null); } public void noteInactive(JobStatus job, int stopReason) { public void noteInactive(JobStatus job, int stopReason, String debugReason) { final long now = sUptimeMillisClock.millis(); if (job.lastEvaluatedPriority >= JobInfo.PRIORITY_TOP_APP) { mCurDataSet.decActiveTop(job.getSourceUid(), job.getSourcePackageName(), now, Loading @@ -483,7 +486,7 @@ public final class JobPackageTracker { } rebatchIfNeeded(now); addEvent(job.getJob().isPeriodic() ? EVENT_STOP_JOB : EVENT_STOP_PERIODIC_JOB, job.getSourceUid(), job.getBatteryName(), job.getJobId(), stopReason); job.getSourceUid(), job.getBatteryName(), job.getJobId(), stopReason, debugReason); } public void noteConcurrency(int totalActive, int fgActive) { Loading Loading @@ -599,9 +602,14 @@ public final class JobPackageTracker { pw.print(mEventTags[index]); if (cmd == EVENT_STOP_JOB || cmd == EVENT_STOP_PERIODIC_JOB) { pw.print(" "); final String reason = mEventReasons[index]; if (reason != null) { pw.print(mEventReasons[index]); } else { pw.print(JobParameters.getReasonName((mEventCmds[index] & EVENT_STOP_REASON_MASK) >> EVENT_STOP_REASON_SHIFT)); } } pw.println(); } return true; Loading services/core/java/com/android/server/job/JobServiceContext.java +1 −1 Original line number Diff line number Diff line Loading @@ -770,7 +770,7 @@ public final class JobServiceContext implements ServiceConnection { } applyStoppedReasonLocked(reason); completedJob = mRunningJob; mJobPackageTracker.noteInactive(completedJob, mParams.getStopReason()); mJobPackageTracker.noteInactive(completedJob, mParams.getStopReason(), reason); try { mBatteryStats.noteJobFinish(mRunningJob.getBatteryName(), mRunningJob.getSourceUid(), mParams.getStopReason()); Loading Loading
services/core/java/com/android/server/job/JobPackageTracker.java +14 −6 Original line number Diff line number Diff line Loading @@ -58,14 +58,17 @@ public final class JobPackageTracker { private final int[] mEventUids = new int[EVENT_BUFFER_SIZE]; private final String[] mEventTags = new String[EVENT_BUFFER_SIZE]; private final int[] mEventJobIds = new int[EVENT_BUFFER_SIZE]; private final String[] mEventReasons = new String[EVENT_BUFFER_SIZE]; public void addEvent(int cmd, int uid, String tag, int jobId, int stopReason) { public void addEvent(int cmd, int uid, String tag, int jobId, int stopReason, String debugReason) { int index = mEventIndices.add(); mEventCmds[index] = cmd | ((stopReason<<EVENT_STOP_REASON_SHIFT) & EVENT_STOP_REASON_MASK); mEventTimes[index] = sElapsedRealtimeClock.millis(); mEventUids[index] = uid; mEventTags[index] = tag; mEventJobIds[index] = jobId; mEventReasons[index] = debugReason; } DataSet mCurDataSet = new DataSet(); Loading Loading @@ -470,10 +473,10 @@ public final class JobPackageTracker { mCurDataSet.incActive(job.getSourceUid(), job.getSourcePackageName(), now); } addEvent(job.getJob().isPeriodic() ? EVENT_START_PERIODIC_JOB : EVENT_START_JOB, job.getSourceUid(), job.getBatteryName(), job.getJobId(), 0); job.getSourceUid(), job.getBatteryName(), job.getJobId(), 0, null); } public void noteInactive(JobStatus job, int stopReason) { public void noteInactive(JobStatus job, int stopReason, String debugReason) { final long now = sUptimeMillisClock.millis(); if (job.lastEvaluatedPriority >= JobInfo.PRIORITY_TOP_APP) { mCurDataSet.decActiveTop(job.getSourceUid(), job.getSourcePackageName(), now, Loading @@ -483,7 +486,7 @@ public final class JobPackageTracker { } rebatchIfNeeded(now); addEvent(job.getJob().isPeriodic() ? EVENT_STOP_JOB : EVENT_STOP_PERIODIC_JOB, job.getSourceUid(), job.getBatteryName(), job.getJobId(), stopReason); job.getSourceUid(), job.getBatteryName(), job.getJobId(), stopReason, debugReason); } public void noteConcurrency(int totalActive, int fgActive) { Loading Loading @@ -599,9 +602,14 @@ public final class JobPackageTracker { pw.print(mEventTags[index]); if (cmd == EVENT_STOP_JOB || cmd == EVENT_STOP_PERIODIC_JOB) { pw.print(" "); final String reason = mEventReasons[index]; if (reason != null) { pw.print(mEventReasons[index]); } else { pw.print(JobParameters.getReasonName((mEventCmds[index] & EVENT_STOP_REASON_MASK) >> EVENT_STOP_REASON_SHIFT)); } } pw.println(); } return true; Loading
services/core/java/com/android/server/job/JobServiceContext.java +1 −1 Original line number Diff line number Diff line Loading @@ -770,7 +770,7 @@ public final class JobServiceContext implements ServiceConnection { } applyStoppedReasonLocked(reason); completedJob = mRunningJob; mJobPackageTracker.noteInactive(completedJob, mParams.getStopReason()); mJobPackageTracker.noteInactive(completedJob, mParams.getStopReason(), reason); try { mBatteryStats.noteJobFinish(mRunningJob.getBatteryName(), mRunningJob.getSourceUid(), mParams.getStopReason()); Loading