Merge "Fix a outer loop iterates on item that is removed by inner loop problem." into udc-dev am: dab1a6309b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21567200 Change-Id: I4c638d7e334ee142621bb8b3d8fc0c0bdab4845f Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -522,6 +522,7 @@ public final class ActiveServices {
|
||||
final ArrayList<ServiceRecord> mStartingBackground = new ArrayList<>();
|
||||
|
||||
final ArrayMap<String, ActiveForegroundApp> mActiveForegroundApps = new ArrayMap<>();
|
||||
final ArrayList<String> mPendingRemoveForegroundApps = new ArrayList<>();
|
||||
|
||||
boolean mActiveForegroundAppsChanged;
|
||||
|
||||
@@ -1687,13 +1688,14 @@ public final class ActiveServices {
|
||||
if (smap != null) {
|
||||
if (DEBUG_FOREGROUND_SERVICE) Slog.d(TAG, "Updating foreground apps for user "
|
||||
+ smap.mUserId);
|
||||
smap.mPendingRemoveForegroundApps.clear();
|
||||
for (int i = smap.mActiveForegroundApps.size()-1; i >= 0; i--) {
|
||||
ActiveForegroundApp aa = smap.mActiveForegroundApps.valueAt(i);
|
||||
if (aa.mEndTime != 0) {
|
||||
boolean canRemove = foregroundAppShownEnoughLocked(aa, now);
|
||||
if (canRemove) {
|
||||
// This was up for longer than the timeout, so just remove immediately.
|
||||
smap.mActiveForegroundApps.removeAt(i);
|
||||
smap.mPendingRemoveForegroundApps.add(smap.mActiveForegroundApps.keyAt(i));
|
||||
smap.mActiveForegroundAppsChanged = true;
|
||||
continue;
|
||||
}
|
||||
@@ -1718,6 +1720,9 @@ public final class ActiveServices {
|
||||
}
|
||||
}
|
||||
}
|
||||
for(int i = smap.mPendingRemoveForegroundApps.size() - 1; i >= 0; i--) {
|
||||
smap.mActiveForegroundApps.remove(smap.mPendingRemoveForegroundApps.get(i));
|
||||
}
|
||||
smap.removeMessages(ServiceMap.MSG_UPDATE_FOREGROUND_APPS);
|
||||
if (nextUpdateTime < Long.MAX_VALUE) {
|
||||
if (DEBUG_FOREGROUND_SERVICE) Slog.d(TAG, "Next update time in: "
|
||||
|
||||
Reference in New Issue
Block a user