diff options
| -rw-r--r-- | services/core/java/com/android/server/am/CachedAppOptimizer.java | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java index 45265ac0c8f3..363c9d0a963a 100644 --- a/services/core/java/com/android/server/am/CachedAppOptimizer.java +++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java @@ -1392,25 +1392,17 @@ public final class CachedAppOptimizer { void cancelAllCompactions(CancelCompactReason reason) { synchronized (mProcLock) { - int size = mPendingCompactionProcesses.size(); - ProcessRecord record; - for (int i=0; i < size; ++i) { - record = mPendingCompactionProcesses.get(i); - cancelCompactionForProcess(record, reason); - // The process record is kept alive after compactions are cleared, - // so make sure to reset the compaction state to avoid skipping any future - // compactions due to a stale value here. - record.mOptRecord.setHasPendingCompact(false); + while(!mPendingCompactionProcesses.isEmpty()) { + cancelCompactionForProcess(mPendingCompactionProcesses.get(0), reason); } mPendingCompactionProcesses.clear(); } - cancelCompaction(); } @GuardedBy("mProcLock") void cancelCompactionForProcess(ProcessRecord app, CancelCompactReason cancelReason) { boolean cancelled = false; - if (!mPendingCompactionProcesses.isEmpty() && mPendingCompactionProcesses.contains(app)) { + if (mPendingCompactionProcesses.contains(app)) { app.mOptRecord.setHasPendingCompact(false); mPendingCompactionProcesses.remove(app); cancelled = true; |