Loading services/core/java/com/android/server/job/controllers/TimeController.java +20 −12 Original line number Diff line number Diff line Loading @@ -110,7 +110,7 @@ public final class TimeController extends StateController { maybeUpdateAlarmsLocked( job.hasTimingDelayConstraint() ? job.getEarliestRunTime() : Long.MAX_VALUE, job.hasDeadlineConstraint() ? job.getLatestRunTimeElapsed() : Long.MAX_VALUE, job.getSourceUid()); new WorkSource(job.getSourceUid(), job.getSourcePackageName())); } } Loading Loading @@ -156,6 +156,7 @@ public final class TimeController extends StateController { synchronized (mLock) { long nextExpiryTime = Long.MAX_VALUE; int nextExpiryUid = 0; String nextExpiryPackageName = null; final long nowElapsedMillis = SystemClock.elapsedRealtime(); Iterator<JobStatus> it = mTrackedJobs.iterator(); Loading @@ -171,10 +172,13 @@ public final class TimeController extends StateController { } else { // Sorted by expiry time, so take the next one and stop. nextExpiryTime = job.getLatestRunTimeElapsed(); nextExpiryUid = job.getSourceUid(); nextExpiryPackageName = job.getSourcePackageName(); break; } } setDeadlineExpiredAlarmLocked(nextExpiryTime, nextExpiryUid); setDeadlineExpiredAlarmLocked(nextExpiryTime, nextExpiryPackageName != null ? new WorkSource(nextExpiryUid, nextExpiryPackageName) : new WorkSource(nextExpiryUid)); } } Loading @@ -200,6 +204,7 @@ public final class TimeController extends StateController { final long nowElapsedMillis = SystemClock.elapsedRealtime(); long nextDelayTime = Long.MAX_VALUE; int nextDelayUid = 0; String nextDelayPackageName = null; boolean ready = false; Iterator<JobStatus> it = mTrackedJobs.iterator(); while (it.hasNext()) { Loading @@ -221,13 +226,16 @@ public final class TimeController extends StateController { if (nextDelayTime > jobDelayTime) { nextDelayTime = jobDelayTime; nextDelayUid = job.getSourceUid(); nextDelayPackageName = job.getSourcePackageName(); } } } if (ready) { mStateChangedListener.onControllerStateChanged(); } setDelayExpiredAlarmLocked(nextDelayTime, nextDelayUid); setDelayExpiredAlarmLocked(nextDelayTime, nextDelayPackageName != null ? new WorkSource(nextDelayUid, nextDelayPackageName) : new WorkSource(nextDelayUid)); } } Loading @@ -241,12 +249,12 @@ public final class TimeController extends StateController { } private void maybeUpdateAlarmsLocked(long delayExpiredElapsed, long deadlineExpiredElapsed, int uid) { WorkSource ws) { if (delayExpiredElapsed < mNextDelayExpiredElapsedMillis) { setDelayExpiredAlarmLocked(delayExpiredElapsed, uid); setDelayExpiredAlarmLocked(delayExpiredElapsed, ws); } if (deadlineExpiredElapsed < mNextJobExpiredElapsedMillis) { setDeadlineExpiredAlarmLocked(deadlineExpiredElapsed, uid); setDeadlineExpiredAlarmLocked(deadlineExpiredElapsed, ws); } } Loading @@ -255,11 +263,11 @@ public final class TimeController extends StateController { * delay will expire. * This alarm <b>will</b> wake up the phone. */ private void setDelayExpiredAlarmLocked(long alarmTimeElapsedMillis, int uid) { private void setDelayExpiredAlarmLocked(long alarmTimeElapsedMillis, WorkSource ws) { alarmTimeElapsedMillis = maybeAdjustAlarmTime(alarmTimeElapsedMillis); mNextDelayExpiredElapsedMillis = alarmTimeElapsedMillis; updateAlarmWithListenerLocked(DELAY_TAG, mNextDelayExpiredListener, mNextDelayExpiredElapsedMillis, uid); mNextDelayExpiredElapsedMillis, ws); } /** Loading @@ -267,11 +275,11 @@ public final class TimeController extends StateController { * deadline will expire. * This alarm <b>will</b> wake up the phone. */ private void setDeadlineExpiredAlarmLocked(long alarmTimeElapsedMillis, int uid) { private void setDeadlineExpiredAlarmLocked(long alarmTimeElapsedMillis, WorkSource ws) { alarmTimeElapsedMillis = maybeAdjustAlarmTime(alarmTimeElapsedMillis); mNextJobExpiredElapsedMillis = alarmTimeElapsedMillis; updateAlarmWithListenerLocked(DEADLINE_TAG, mDeadlineExpiredListener, mNextJobExpiredElapsedMillis, uid); mNextJobExpiredElapsedMillis, ws); } private long maybeAdjustAlarmTime(long proposedAlarmTimeElapsedMillis) { Loading @@ -283,7 +291,7 @@ public final class TimeController extends StateController { } private void updateAlarmWithListenerLocked(String tag, OnAlarmListener listener, long alarmTimeElapsed, int uid) { long alarmTimeElapsed, WorkSource ws) { ensureAlarmServiceLocked(); if (alarmTimeElapsed == Long.MAX_VALUE) { mAlarmService.cancel(listener); Loading @@ -292,7 +300,7 @@ public final class TimeController extends StateController { Slog.d(TAG, "Setting " + tag + " for: " + alarmTimeElapsed); } mAlarmService.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, alarmTimeElapsed, AlarmManager.WINDOW_HEURISTIC, 0, tag, listener, null, new WorkSource(uid)); AlarmManager.WINDOW_HEURISTIC, 0, tag, listener, null, ws); } } Loading Loading
services/core/java/com/android/server/job/controllers/TimeController.java +20 −12 Original line number Diff line number Diff line Loading @@ -110,7 +110,7 @@ public final class TimeController extends StateController { maybeUpdateAlarmsLocked( job.hasTimingDelayConstraint() ? job.getEarliestRunTime() : Long.MAX_VALUE, job.hasDeadlineConstraint() ? job.getLatestRunTimeElapsed() : Long.MAX_VALUE, job.getSourceUid()); new WorkSource(job.getSourceUid(), job.getSourcePackageName())); } } Loading Loading @@ -156,6 +156,7 @@ public final class TimeController extends StateController { synchronized (mLock) { long nextExpiryTime = Long.MAX_VALUE; int nextExpiryUid = 0; String nextExpiryPackageName = null; final long nowElapsedMillis = SystemClock.elapsedRealtime(); Iterator<JobStatus> it = mTrackedJobs.iterator(); Loading @@ -171,10 +172,13 @@ public final class TimeController extends StateController { } else { // Sorted by expiry time, so take the next one and stop. nextExpiryTime = job.getLatestRunTimeElapsed(); nextExpiryUid = job.getSourceUid(); nextExpiryPackageName = job.getSourcePackageName(); break; } } setDeadlineExpiredAlarmLocked(nextExpiryTime, nextExpiryUid); setDeadlineExpiredAlarmLocked(nextExpiryTime, nextExpiryPackageName != null ? new WorkSource(nextExpiryUid, nextExpiryPackageName) : new WorkSource(nextExpiryUid)); } } Loading @@ -200,6 +204,7 @@ public final class TimeController extends StateController { final long nowElapsedMillis = SystemClock.elapsedRealtime(); long nextDelayTime = Long.MAX_VALUE; int nextDelayUid = 0; String nextDelayPackageName = null; boolean ready = false; Iterator<JobStatus> it = mTrackedJobs.iterator(); while (it.hasNext()) { Loading @@ -221,13 +226,16 @@ public final class TimeController extends StateController { if (nextDelayTime > jobDelayTime) { nextDelayTime = jobDelayTime; nextDelayUid = job.getSourceUid(); nextDelayPackageName = job.getSourcePackageName(); } } } if (ready) { mStateChangedListener.onControllerStateChanged(); } setDelayExpiredAlarmLocked(nextDelayTime, nextDelayUid); setDelayExpiredAlarmLocked(nextDelayTime, nextDelayPackageName != null ? new WorkSource(nextDelayUid, nextDelayPackageName) : new WorkSource(nextDelayUid)); } } Loading @@ -241,12 +249,12 @@ public final class TimeController extends StateController { } private void maybeUpdateAlarmsLocked(long delayExpiredElapsed, long deadlineExpiredElapsed, int uid) { WorkSource ws) { if (delayExpiredElapsed < mNextDelayExpiredElapsedMillis) { setDelayExpiredAlarmLocked(delayExpiredElapsed, uid); setDelayExpiredAlarmLocked(delayExpiredElapsed, ws); } if (deadlineExpiredElapsed < mNextJobExpiredElapsedMillis) { setDeadlineExpiredAlarmLocked(deadlineExpiredElapsed, uid); setDeadlineExpiredAlarmLocked(deadlineExpiredElapsed, ws); } } Loading @@ -255,11 +263,11 @@ public final class TimeController extends StateController { * delay will expire. * This alarm <b>will</b> wake up the phone. */ private void setDelayExpiredAlarmLocked(long alarmTimeElapsedMillis, int uid) { private void setDelayExpiredAlarmLocked(long alarmTimeElapsedMillis, WorkSource ws) { alarmTimeElapsedMillis = maybeAdjustAlarmTime(alarmTimeElapsedMillis); mNextDelayExpiredElapsedMillis = alarmTimeElapsedMillis; updateAlarmWithListenerLocked(DELAY_TAG, mNextDelayExpiredListener, mNextDelayExpiredElapsedMillis, uid); mNextDelayExpiredElapsedMillis, ws); } /** Loading @@ -267,11 +275,11 @@ public final class TimeController extends StateController { * deadline will expire. * This alarm <b>will</b> wake up the phone. */ private void setDeadlineExpiredAlarmLocked(long alarmTimeElapsedMillis, int uid) { private void setDeadlineExpiredAlarmLocked(long alarmTimeElapsedMillis, WorkSource ws) { alarmTimeElapsedMillis = maybeAdjustAlarmTime(alarmTimeElapsedMillis); mNextJobExpiredElapsedMillis = alarmTimeElapsedMillis; updateAlarmWithListenerLocked(DEADLINE_TAG, mDeadlineExpiredListener, mNextJobExpiredElapsedMillis, uid); mNextJobExpiredElapsedMillis, ws); } private long maybeAdjustAlarmTime(long proposedAlarmTimeElapsedMillis) { Loading @@ -283,7 +291,7 @@ public final class TimeController extends StateController { } private void updateAlarmWithListenerLocked(String tag, OnAlarmListener listener, long alarmTimeElapsed, int uid) { long alarmTimeElapsed, WorkSource ws) { ensureAlarmServiceLocked(); if (alarmTimeElapsed == Long.MAX_VALUE) { mAlarmService.cancel(listener); Loading @@ -292,7 +300,7 @@ public final class TimeController extends StateController { Slog.d(TAG, "Setting " + tag + " for: " + alarmTimeElapsed); } mAlarmService.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, alarmTimeElapsed, AlarmManager.WINDOW_HEURISTIC, 0, tag, listener, null, new WorkSource(uid)); AlarmManager.WINDOW_HEURISTIC, 0, tag, listener, null, ws); } } Loading