summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server
diff options
context:
space:
mode:
authorJeff Hamilton <jham@android.com>2010-05-27 09:39:19 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-05-27 09:39:19 -0700
commitdc46f6f6cc44954c23229019270b54b8912be825 (patch)
treeaf4357c659a77dd73c7d16be2ee052987cb38594 /services/java/com/android/server
parentb3f3caef38326be2b4aea309237f718e6e2d2b8a (diff)
parentacf8474b6843215c6ee5da5e58630de0afa2be60 (diff)
downloadframeworks_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
Diffstat (limited to 'services/java/com/android/server')
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java18
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:"