diff options
3 files changed, 23 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java index ab30f2ed4483..e6026c14cd28 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java @@ -158,6 +158,12 @@ public class DozeLog { log("missedTick by=" + delay); } + public static void traceTimeTickScheduled(long when, long triggerAt) { + if (!ENABLED) return; + log("timeTickScheduled at=" + FORMAT.format(new Date(when)) + " triggerAt=" + + FORMAT.format(new Date(triggerAt))); + } + public static void traceKeyguard(boolean showing) { if (!ENABLED) return; log("keyguard " + showing); diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java b/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java index 78632459c867..67aa82dc9688 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java @@ -158,8 +158,12 @@ public class DozeUi implements DozeMachine.Part { return; } - long delta = roundToNextMinute(System.currentTimeMillis()) - System.currentTimeMillis(); - mTimeTicker.schedule(delta, AlarmTimeout.MODE_IGNORE_IF_SCHEDULED); + long time = System.currentTimeMillis(); + long delta = roundToNextMinute(time) - System.currentTimeMillis(); + boolean scheduled = mTimeTicker.schedule(delta, AlarmTimeout.MODE_IGNORE_IF_SCHEDULED); + if (scheduled) { + DozeLog.traceTimeTickScheduled(time, time + delta); + } mLastTimeTickElapsed = SystemClock.elapsedRealtime(); } diff --git a/packages/SystemUI/src/com/android/systemui/util/AlarmTimeout.java b/packages/SystemUI/src/com/android/systemui/util/AlarmTimeout.java index f7f61aff9849..a791376a48d5 100644 --- a/packages/SystemUI/src/com/android/systemui/util/AlarmTimeout.java +++ b/packages/SystemUI/src/com/android/systemui/util/AlarmTimeout.java @@ -44,7 +44,15 @@ public class AlarmTimeout implements AlarmManager.OnAlarmListener { mHandler = handler; } - public void schedule(long timeout, int mode) { + /** + * Schedules an alarm in {@code timeout} milliseconds in the future. + * + * @param timeout How long to wait from now. + * @param mode {@link #MODE_CRASH_IF_SCHEDULED}, {@link #MODE_IGNORE_IF_SCHEDULED} or + * {@link #MODE_RESCHEDULE_IF_SCHEDULED}. + * @return {@code true} when scheduled successfully, {@code false} otherwise. + */ + public boolean schedule(long timeout, int mode) { switch (mode) { case MODE_CRASH_IF_SCHEDULED: if (mScheduled) { @@ -53,7 +61,7 @@ public class AlarmTimeout implements AlarmManager.OnAlarmListener { break; case MODE_IGNORE_IF_SCHEDULED: if (mScheduled) { - return; + return false; } break; case MODE_RESCHEDULE_IF_SCHEDULED: @@ -68,6 +76,7 @@ public class AlarmTimeout implements AlarmManager.OnAlarmListener { mAlarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + timeout, mTag, this, mHandler); mScheduled = true; + return true; } public boolean isScheduled() { |