am 14ccc26f: Merge "[ActivityManager] Skip receiver precisely."
* commit '14ccc26f1ce006963f1a0b7a917404aa6a0e9da1': [ActivityManager] Skip receiver precisely.
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user