summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeLog.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeUi.java16
2 files changed, 21 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
index 870d4d1c6a9d..90e1c0723945 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
@@ -145,6 +145,11 @@ public class DozeLog {
log("screenOff why=" + why);
}
+ public static void traceMissedTick(String delay) {
+ if (!ENABLED) return;
+ log("missedTick by=" + delay);
+ }
+
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 6098a20a0c64..03076cc4b7a8 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java
@@ -20,6 +20,8 @@ import android.app.AlarmManager;
import android.content.Context;
import android.os.Handler;
import android.os.SystemClock;
+import android.text.format.Formatter;
+import android.util.Log;
import com.android.systemui.util.wakelock.WakeLock;
@@ -31,6 +33,7 @@ import java.util.GregorianCalendar;
*/
public class DozeUi implements DozeMachine.Part {
+ private static final long TIME_TICK_DEADLINE_MILLIS = 90 * 1000; // 1.5min
private final Context mContext;
private final AlarmManager mAlarmManager;
private final DozeHost mHost;
@@ -40,6 +43,7 @@ public class DozeUi implements DozeMachine.Part {
private final AlarmManager.OnAlarmListener mTimeTick;
private boolean mTimeTickScheduled = false;
+ private long mLastTimeTickElapsed = 0;
public DozeUi(Context context, AlarmManager alarmManager, DozeMachine machine,
WakeLock wakeLock, DozeHost host, Handler handler) {
@@ -103,15 +107,26 @@ public class DozeUi implements DozeMachine.Part {
SystemClock.elapsedRealtime() + delta, "doze_time_tick", mTimeTick, mHandler);
mTimeTickScheduled = true;
+ mLastTimeTickElapsed = SystemClock.elapsedRealtime();
}
private void unscheduleTimeTick() {
if (!mTimeTickScheduled) {
return;
}
+ verifyLastTimeTick();
mAlarmManager.cancel(mTimeTick);
}
+ private void verifyLastTimeTick() {
+ long millisSinceLastTick = SystemClock.elapsedRealtime() - mLastTimeTickElapsed;
+ if (millisSinceLastTick > TIME_TICK_DEADLINE_MILLIS) {
+ String delay = Formatter.formatShortElapsedTime(mContext, millisSinceLastTick);
+ DozeLog.traceMissedTick(delay);
+ Log.e(DozeMachine.TAG, "Missed AOD time tick by " + delay);
+ }
+ }
+
private long roundToNextMinute(long timeInMillis) {
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTimeInMillis(timeInMillis);
@@ -127,6 +142,7 @@ public class DozeUi implements DozeMachine.Part {
// Alarm was canceled, but we still got the callback. Ignore.
return;
}
+ verifyLastTimeTick();
mHost.dozeTimeTick();