diff options
| -rw-r--r-- | services/usage/java/com/android/server/usage/UsageStatsService.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java index 85bde0721e9a..583bac2fedb6 100644 --- a/services/usage/java/com/android/server/usage/UsageStatsService.java +++ b/services/usage/java/com/android/server/usage/UsageStatsService.java @@ -145,6 +145,8 @@ public class UsageStatsService extends SystemService implements private boolean mScreenOn; private long mLastAppIdleParoledTime; + private volatile boolean mPendingOneTimeCheckIdleStates; + long mScreenOnTime; long mLastScreenOnEventRealtime; @@ -221,6 +223,10 @@ public class UsageStatsService extends SystemService implements synchronized (this) { updateDisplayLocked(); } + + if (mPendingOneTimeCheckIdleStates) { + postOneTimeCheckIdleStates(); + } } else if (phase == PHASE_BOOT_COMPLETED) { setAppIdleParoled(getContext().getSystemService(BatteryManager.class).isCharging()); } @@ -368,7 +374,13 @@ public class UsageStatsService extends SystemService implements * scheduling a series of repeating checkIdleStates each time we fired off one. */ void postOneTimeCheckIdleStates() { - mHandler.sendEmptyMessage(MSG_ONE_TIME_CHECK_IDLE_STATES); + if (mDeviceIdleController == null) { + // Not booted yet; wait for it! + mPendingOneTimeCheckIdleStates = true; + } else { + mHandler.sendEmptyMessage(MSG_ONE_TIME_CHECK_IDLE_STATES); + mPendingOneTimeCheckIdleStates = false; + } } /** Check all running users' or specified user's apps to see if they enter an idle state. */ |