diff options
| author | 2022-11-10 16:20:49 +0000 | |
|---|---|---|
| committer | 2022-11-10 16:20:49 +0000 | |
| commit | 25e1ad5ef3b131fc31a25c279d493e376f15ed1d (patch) | |
| tree | 29e2491c0fbcc0fff6944aef04b72f4e8d3143b9 | |
| parent | 8442d1a5680b1317251df51f2ad42cd4f703315e (diff) | |
| parent | 580d000d29551d7a90743741f259d40d732fe164 (diff) | |
Merge "BroadcastQueue: fix proto dump regression."
| -rw-r--r-- | services/core/java/com/android/server/am/BroadcastQueueModernImpl.java | 45 |
1 files changed, 25 insertions, 20 deletions
diff --git a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java index c3839a99ba52..6793876942f6 100644 --- a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java +++ b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java @@ -599,6 +599,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue { // If nothing to dispatch, send any pending result immediately if (r.receivers.isEmpty()) { scheduleResultTo(r); + notifyFinishBroadcast(r); } traceEnd(cookie); @@ -1402,30 +1403,34 @@ class BroadcastQueueModernImpl extends BroadcastQueue { final boolean recordFinished = (r.terminalCount == r.receivers.size()); if (recordFinished) { - mService.notifyBroadcastFinishedLocked(r); - mHistory.addBroadcastToHistoryLocked(r); - - r.finishTime = SystemClock.uptimeMillis(); - r.nextReceiver = r.receivers.size(); - BroadcastQueueImpl.logBootCompletedBroadcastCompletionLatencyIfPossible(r); + notifyFinishBroadcast(r); + } + } - if (r.intent.getComponent() == null && r.intent.getPackage() == null - && (r.intent.getFlags() & Intent.FLAG_RECEIVER_REGISTERED_ONLY) == 0) { - int manifestCount = 0; - int manifestSkipCount = 0; - for (int i = 0; i < r.receivers.size(); i++) { - if (r.receivers.get(i) instanceof ResolveInfo) { - manifestCount++; - if (r.delivery[i] == BroadcastRecord.DELIVERY_SKIPPED) { - manifestSkipCount++; - } + private void notifyFinishBroadcast(@NonNull BroadcastRecord r) { + mService.notifyBroadcastFinishedLocked(r); + mHistory.addBroadcastToHistoryLocked(r); + + r.finishTime = SystemClock.uptimeMillis(); + r.nextReceiver = r.receivers.size(); + BroadcastQueueImpl.logBootCompletedBroadcastCompletionLatencyIfPossible(r); + + if (r.intent.getComponent() == null && r.intent.getPackage() == null + && (r.intent.getFlags() & Intent.FLAG_RECEIVER_REGISTERED_ONLY) == 0) { + int manifestCount = 0; + int manifestSkipCount = 0; + for (int i = 0; i < r.receivers.size(); i++) { + if (r.receivers.get(i) instanceof ResolveInfo) { + manifestCount++; + if (r.delivery[i] == BroadcastRecord.DELIVERY_SKIPPED) { + manifestSkipCount++; } } - - final long dispatchTime = SystemClock.uptimeMillis() - r.enqueueTime; - mService.addBroadcastStatLocked(r.intent.getAction(), r.callerPackage, - manifestCount, manifestSkipCount, dispatchTime); } + + final long dispatchTime = SystemClock.uptimeMillis() - r.enqueueTime; + mService.addBroadcastStatLocked(r.intent.getAction(), r.callerPackage, + manifestCount, manifestSkipCount, dispatchTime); } } |