Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9a310914 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

BroadcastQueue: skip ANRs when assuming success.

Both the legacy and modern stack assume delivery success for
non-ordered registered receivers.  In these situations we don't need
to start ANR tracking logic, which can give some performance wins.

Bug: 255936508
Test: ./frameworks/base/libs/hwui/tests/scripts/prep_generic.sh little && atest ActivityManagerPerfTests:BroadcastPerfTest
Change-Id: Id8d01b055f5009850cc6e4f3d3fe45e2d68a4968
parent 92a5c536
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -747,7 +747,10 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
            return;
        }

        if (mService.mProcessesReady && !r.timeoutExempt) {
        // Skip ANR tracking early during boot, when requested, or when we
        // immediately assume delivery success
        final boolean assumeDelivered = (receiver instanceof BroadcastFilter) && !r.ordered;
        if (mService.mProcessesReady && !r.timeoutExempt && !assumeDelivered) {
            queue.lastCpuDelayTime = queue.app.getCpuDelayTime();

            final long timeout = r.isForeground() ? mFgConstants.TIMEOUT : mBgConstants.TIMEOUT;
@@ -789,7 +792,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {

                    // TODO: consider making registered receivers of unordered
                    // broadcasts report results to detect ANRs
                    if (!r.ordered) {
                    if (assumeDelivered) {
                        finishReceiverLocked(queue, BroadcastRecord.DELIVERY_DELIVERED);
                    }
                } else {