For intent ACTION_PACKAGE_CHANGED, there could be a lot of broadcasts related to enabling/disabling
components by apps which could result in thrashing on the PackageManager. For apps that
do not want to be restarted when such a broadcast is sent, we can just aggregate these broadcasts and
handle them at one go.
Changes include:
New structure to hold pending broadcasts by class name. If a component is enabled or disabled frequently
aggregate component enabled/disabled settings in this structure in a 10 second window and then
send out the accumulated list of broadcasts to the ActivityManager.
A new Handler implementation handles this message
Add new attribute name EXTRA_CHANGED_COMPONENT_NAME in broadcast intent Intent.ACTION_PACKAGE_CHANGED for
additional information for apps like Launcher.
Rename a couple of parameters, the names were too jarring.
This commit is contained in:
@@ -1267,6 +1267,8 @@ public class Intent implements Parcelable {
|
||||
* enabled or disabled. The data contains the name of the package.
|
||||
* <ul>
|
||||
* <li> {@link #EXTRA_UID} containing the integer uid assigned to the package.
|
||||
* <li> {@link #EXTRA_CHANGED_COMPONENT_NAME} containing the class name of the changed component.
|
||||
* <li> {@link #EXTRA_DONT_KILL_APP} containing boolean field to override the default action of restarting the application.
|
||||
* </ul>
|
||||
*
|
||||
* <p class="note">This is a protected intent that can only be sent
|
||||
@@ -2034,6 +2036,14 @@ public class Intent implements Parcelable {
|
||||
public static final String EXTRA_REMOTE_INTENT_TOKEN =
|
||||
"android.intent.extra.remote_intent_token";
|
||||
|
||||
/**
|
||||
* Used as an int extra field in {@link android.content.Intent#ACTION_PACKAGE_CHANGED}
|
||||
* intent to supply the name of the component that changed.
|
||||
* @hide
|
||||
*/
|
||||
public static final String EXTRA_CHANGED_COMPONENT_NAME =
|
||||
"android.intent.extra.changed_component_name";
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// ---------------------------------------------------------------------
|
||||
// Intent flags (see mFlags variable).
|
||||
|
||||
Reference in New Issue
Block a user