diff options
Diffstat (limited to 'services/core/java/com/android/server/pm/InstallPackageHelper.java')
-rw-r--r-- | services/core/java/com/android/server/pm/InstallPackageHelper.java | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index e62f35d591fa..e90a5db39d71 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -2548,28 +2548,31 @@ final class InstallPackageHelper { public void sendPendingBroadcasts() { String[] packages; ArrayList<String>[] components; - int size = 0; + int numBroadcasts = 0, numUsers; int[] uids; synchronized (mPm.mLock) { final SparseArray<ArrayMap<String, ArrayList<String>>> userIdToPackagesToComponents = mPm.mPendingBroadcasts.copiedMap(); - size = userIdToPackagesToComponents.size(); - if (size <= 0) { + numUsers = userIdToPackagesToComponents.size(); + for (int n = 0; n < numUsers; n++) { + numBroadcasts += userIdToPackagesToComponents.valueAt(n).size(); + } + if (numBroadcasts == 0) { // Nothing to be done. Just return return; } - packages = new String[size]; - components = new ArrayList[size]; - uids = new int[size]; + packages = new String[numBroadcasts]; + components = new ArrayList[numBroadcasts]; + uids = new int[numBroadcasts]; int i = 0; // filling out the above arrays - for (int n = 0; n < size; n++) { + for (int n = 0; n < numUsers; n++) { final int packageUserId = userIdToPackagesToComponents.keyAt(n); final ArrayMap<String, ArrayList<String>> componentsToBroadcast = userIdToPackagesToComponents.valueAt(n); final int numComponents = CollectionUtils.size(componentsToBroadcast); - for (int index = 0; i < size && index < numComponents; index++) { + for (int index = 0; index < numComponents; index++) { packages[i] = componentsToBroadcast.keyAt(index); components[i] = componentsToBroadcast.valueAt(index); final PackageSetting ps = mPm.mSettings.getPackageLPr(packages[i]); @@ -2579,12 +2582,12 @@ final class InstallPackageHelper { i++; } } - size = i; + numBroadcasts = i; mPm.mPendingBroadcasts.clear(); } final Computer snapshot = mPm.snapshotComputer(); // Send broadcasts - for (int i = 0; i < size; i++) { + for (int i = 0; i < numBroadcasts; i++) { mPm.sendPackageChangedBroadcast(snapshot, packages[i], true /* dontKillApp */, components[i], uids[i], null /* reason */); } |