am 14ccc26f: Merge "[ActivityManager] Skip receiver precisely."

* commit '14ccc26f1ce006963f1a0b7a917404aa6a0e9da1':
  [ActivityManager] Skip receiver precisely.
This commit is contained in:
Olawale Ogunwale
2015-03-09 16:36:31 +00:00
committed by Android Git Automerger

View File

@@ -294,28 +294,23 @@ public final class BroadcastQueue {
} }
public void skipCurrentReceiverLocked(ProcessRecord app) { public void skipCurrentReceiverLocked(ProcessRecord app) {
boolean reschedule = false; BroadcastRecord r = null;
BroadcastRecord r = app.curReceiver; if (mOrderedBroadcasts.size() > 0) {
if (r != null && r.queue == this) { BroadcastRecord br = mOrderedBroadcasts.get(0);
// The current broadcast is waiting for this app's receiver if (br.curApp == app) {
// to be finished. Looks like that's not going to happen, so r = br;
// let the broadcast continue. }
logBroadcastReceiverDiscardLocked(r);
finishReceiverLocked(r, r.resultCode, r.resultData,
r.resultExtras, r.resultAbort, false);
reschedule = true;
} }
if (r == null && mPendingBroadcast != null && mPendingBroadcast.curApp == app) {
r = mPendingBroadcast;
if (r != null && r.curApp == app) {
if (DEBUG_BROADCAST) Slog.v(TAG, if (DEBUG_BROADCAST) Slog.v(TAG,
"[" + mQueueName + "] skip & discard pending app " + r); "[" + mQueueName + "] skip & discard pending app " + r);
r = mPendingBroadcast;
}
if (r != null) {
logBroadcastReceiverDiscardLocked(r); logBroadcastReceiverDiscardLocked(r);
finishReceiverLocked(r, r.resultCode, r.resultData, finishReceiverLocked(r, r.resultCode, r.resultData,
r.resultExtras, r.resultAbort, false); r.resultExtras, r.resultAbort, false);
reschedule = true;
}
if (reschedule) {
scheduleBroadcastsLocked(); scheduleBroadcastsLocked();
} }
} }