diff options
author | Jeff Sharkey <jsharkey@android.com> | 2016-01-29 10:45:45 -0700 |
---|---|---|
committer | Addison Nuding <addison@google.com> | 2016-03-01 19:05:54 +0000 |
commit | 34c06c2de7c5c1120ad965a0b83010c5c0c69b15 (patch) | |
tree | 471637158a0fbdeeba398fdd202cbc18e7a0d9fb | |
parent | bab7f95c7c3b58bb48a56e555490aeea19a6b632 (diff) | |
download | base-34c06c2de7c5c1120ad965a0b83010c5c0c69b15.tar.gz |
DO NOT MERGE ANYWHERE: Hack to get devices booting again.
If we try scheduling a pass before the system is ready, record a
pending event and dispatch once we're actually ready.
Bug: 26863668
Change-Id: I028285383c8bbe8b653aeaa7544eefe3d41277bc
(cherry picked from commit 538c11cf2175d4e30337e8776401bfede85866be)
(cherry picked from commit 558f09fcf6766d593b372e6df5adc3090fa4629a)
-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. */ |