Skip to content
Commit ea0b864a authored by Mårten Kongstad's avatar Mårten Kongstad Committed by Ryan Mitchell
Browse files

OMS: reduce number of OVERLAY_CHANGED broadcasts

As part of "I63df58510:OMS: add transactional API", the OMS changed how
to broadcast OVERLAY_CHANGED. The intent used to be sent <once> when an
overlay changed state. This was modified to <once per package affected>
when an overlay changed state.

While this makes it easier for applications to detect if they have been
forced to reload their resources, the change drastically increased the
number of OVERLAY_CHANGED intents, especially when the target package is
"android" which affects all packages. To make matters worse, the package
manager responds to an OVERLAY_CHANGED intent by broadcasting
PACKAGE_CHANGED.

Ultimately the flood of intents caused lock contentions in the activity
manager.

Revert the OMS strategy for how to broadcast OVERLAY_CHANGED to the old
behaviour.

Bug: 177065099
Test: atest FrameworksServicesTests:com.android.server.om OverlayDeviceTests OverlayHostTests CtsAppSecurityHostTestCases:OverlayHostTest
Test: manual: adb exec-out cmd activity dump  # check for OVERLAY_CHANGED in "Historical broadcasts"
Change-Id: I33358ce4dc1d72e6e695c70cf02ab72526592b17
parent dc427169
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment