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