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

Commit ccb17e4d 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: manual
Change-Id: I9899e805f7fb615865ef3685ca6d56421228785c
parent 2533f9a7
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -736,7 +736,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;
@@ -779,7 +782,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,
                                "assuming delivered");
                    }