diff options
author | Jeff Hamilton <jham@android.com> | 2010-05-27 09:39:19 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-05-27 09:39:19 -0700 |
commit | dc46f6f6cc44954c23229019270b54b8912be825 (patch) | |
tree | af4357c659a77dd73c7d16be2ee052987cb38594 | |
parent | b3f3caef38326be2b4aea309237f718e6e2d2b8a (diff) | |
parent | acf8474b6843215c6ee5da5e58630de0afa2be60 (diff) | |
download | frameworks_base-dc46f6f6cc44954c23229019270b54b8912be825.zip frameworks_base-dc46f6f6cc44954c23229019270b54b8912be825.tar.gz frameworks_base-dc46f6f6cc44954c23229019270b54b8912be825.tar.bz2 |
Merge "Don't enforce broadcast timeouts for PRE_BOOT_COMPLETED broadcasts." into froyo
-rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 022eccf..61ab197 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -1106,7 +1106,12 @@ public final class ActivityManagerService extends ActivityManagerNative implemen mHandler.sendMessageDelayed(nmsg, BROADCAST_TIMEOUT); return; } - broadcastTimeout(); + // Only process broadcast timeouts if the system is ready. That way + // PRE_BOOT_COMPLETED broadcasts can't timeout as they are intended + // to do heavy lifting for system up + if (mSystemReady) { + broadcastTimeout(); + } } break; case PAUSE_TIMEOUT_MSG: { IBinder token = (IBinder)msg.obj; @@ -13116,10 +13121,15 @@ public final class ActivityManagerService extends ActivityManagerNative implemen // Ensure that even if something goes awry with the timeout // detection, we catch "hung" broadcasts here, discard them, - // and continue to make progress. + // and continue to make progress. + // + // This is only done if the system is ready so that PRE_BOOT_COMPLETED + // receivers don't get executed with with timeouts. They're intended for + // one time heavy lifting after system upgrades and can take + // significant amounts of time. int numReceivers = (r.receivers != null) ? r.receivers.size() : 0; - long now = SystemClock.uptimeMillis(); - if (r.dispatchTime > 0) { + if (mSystemReady && r.dispatchTime > 0) { + long now = SystemClock.uptimeMillis(); if ((numReceivers > 0) && (now > r.dispatchTime + (2*BROADCAST_TIMEOUT*numReceivers))) { Slog.w(TAG, "Hung broadcast discarded after timeout failure:" |