diff options
author | Olawale Ogunwale <ogunwale@google.com> | 2015-03-09 16:43:16 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-03-09 16:43:16 +0000 |
commit | ca54b8765776cb1d1f5c2b87ca046ca64b9386ad (patch) | |
tree | 870686b3c79701db060567ff730608062d368e21 /services | |
parent | e88afe3ee7b1944c8814f78f0eea41884d07600d (diff) | |
parent | edc3c8939f3cde4ab9343e7654f5dac1122fb470 (diff) | |
download | frameworks_base-ca54b8765776cb1d1f5c2b87ca046ca64b9386ad.zip frameworks_base-ca54b8765776cb1d1f5c2b87ca046ca64b9386ad.tar.gz frameworks_base-ca54b8765776cb1d1f5c2b87ca046ca64b9386ad.tar.bz2 |
am edc3c893: am 14ccc26f: Merge "[ActivityManager] Skip receiver precisely."
* commit 'edc3c8939f3cde4ab9343e7654f5dac1122fb470':
[ActivityManager] Skip receiver precisely.
Diffstat (limited to 'services')
-rw-r--r-- | services/core/java/com/android/server/am/BroadcastQueue.java | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java index 9b7d0b2..5d969c6 100644 --- a/services/core/java/com/android/server/am/BroadcastQueue.java +++ b/services/core/java/com/android/server/am/BroadcastQueue.java @@ -294,28 +294,23 @@ public final class BroadcastQueue { } public void skipCurrentReceiverLocked(ProcessRecord app) { - boolean reschedule = false; - BroadcastRecord r = app.curReceiver; - if (r != null && r.queue == this) { - // The current broadcast is waiting for this app's receiver - // to be finished. Looks like that's not going to happen, so - // let the broadcast continue. - logBroadcastReceiverDiscardLocked(r); - finishReceiverLocked(r, r.resultCode, r.resultData, - r.resultExtras, r.resultAbort, false); - reschedule = true; + BroadcastRecord r = null; + if (mOrderedBroadcasts.size() > 0) { + BroadcastRecord br = mOrderedBroadcasts.get(0); + if (br.curApp == app) { + r = br; + } } - - r = mPendingBroadcast; - if (r != null && r.curApp == app) { + if (r == null && mPendingBroadcast != null && mPendingBroadcast.curApp == app) { if (DEBUG_BROADCAST) Slog.v(TAG, "[" + mQueueName + "] skip & discard pending app " + r); + r = mPendingBroadcast; + } + + if (r != null) { logBroadcastReceiverDiscardLocked(r); finishReceiverLocked(r, r.resultCode, r.resultData, r.resultExtras, r.resultAbort, false); - reschedule = true; - } - if (reschedule) { scheduleBroadcastsLocked(); } } |