Loading services/core/java/com/android/server/am/CachedAppOptimizer.java +8 −4 Original line number Original line Diff line number Diff line Loading @@ -1525,10 +1525,14 @@ public final class CachedAppOptimizer { opt.setPendingFreeze(false); opt.setPendingFreeze(false); } } UidRecord uidRec = app.getUidRecord(); final UidRecord uidRec = app.getUidRecord(); if (uidRec != null && uidRec.isFrozen()) { if (uidRec != null) { uidRec.setFrozen(false); final boolean isFrozen = uidRec.getNumOfProcs() > 1 postUidFrozenMessage(uidRec.getUid(), false); && uidRec.areAllProcessesFrozen(app); if (isFrozen != uidRec.isFrozen()) { uidRec.setFrozen(isFrozen); postUidFrozenMessage(uidRec.getUid(), isFrozen); } } } mFrozenProcesses.delete(app.getPid()); mFrozenProcesses.delete(app.getPid()); Loading services/core/java/com/android/server/am/UidRecord.java +13 −2 Original line number Original line Diff line number Diff line Loading @@ -345,21 +345,32 @@ public final class UidRecord { } } /** /** * Check whether all processes in the Uid are frozen. * * @param excluding Skip this process record during the check. * @return true if all processes in the Uid are frozen, false otherwise. * @return true if all processes in the Uid are frozen, false otherwise. */ */ @GuardedBy(anyOf = {"mService", "mProcLock"}) @GuardedBy(anyOf = {"mService", "mProcLock"}) public boolean areAllProcessesFrozen() { public boolean areAllProcessesFrozen(ProcessRecord excluding) { for (int i = mProcRecords.size() - 1; i >= 0; i--) { for (int i = mProcRecords.size() - 1; i >= 0; i--) { final ProcessRecord app = mProcRecords.valueAt(i); final ProcessRecord app = mProcRecords.valueAt(i); final ProcessCachedOptimizerRecord opt = app.mOptRecord; final ProcessCachedOptimizerRecord opt = app.mOptRecord; if (!opt.isFrozen()) { if (excluding != app && !opt.isFrozen()) { return false; return false; } } } } return true; return true; } } /** * @return true if all processes in the Uid are frozen, false otherwise. */ @GuardedBy(anyOf = {"mService", "mProcLock"}) public boolean areAllProcessesFrozen() { return areAllProcessesFrozen(null); } @GuardedBy(anyOf = {"mService", "mProcLock"}) @GuardedBy(anyOf = {"mService", "mProcLock"}) public void setFrozen(boolean frozen) { public void setFrozen(boolean frozen) { mUidIsFrozen = frozen; mUidIsFrozen = frozen; Loading Loading
services/core/java/com/android/server/am/CachedAppOptimizer.java +8 −4 Original line number Original line Diff line number Diff line Loading @@ -1525,10 +1525,14 @@ public final class CachedAppOptimizer { opt.setPendingFreeze(false); opt.setPendingFreeze(false); } } UidRecord uidRec = app.getUidRecord(); final UidRecord uidRec = app.getUidRecord(); if (uidRec != null && uidRec.isFrozen()) { if (uidRec != null) { uidRec.setFrozen(false); final boolean isFrozen = uidRec.getNumOfProcs() > 1 postUidFrozenMessage(uidRec.getUid(), false); && uidRec.areAllProcessesFrozen(app); if (isFrozen != uidRec.isFrozen()) { uidRec.setFrozen(isFrozen); postUidFrozenMessage(uidRec.getUid(), isFrozen); } } } mFrozenProcesses.delete(app.getPid()); mFrozenProcesses.delete(app.getPid()); Loading
services/core/java/com/android/server/am/UidRecord.java +13 −2 Original line number Original line Diff line number Diff line Loading @@ -345,21 +345,32 @@ public final class UidRecord { } } /** /** * Check whether all processes in the Uid are frozen. * * @param excluding Skip this process record during the check. * @return true if all processes in the Uid are frozen, false otherwise. * @return true if all processes in the Uid are frozen, false otherwise. */ */ @GuardedBy(anyOf = {"mService", "mProcLock"}) @GuardedBy(anyOf = {"mService", "mProcLock"}) public boolean areAllProcessesFrozen() { public boolean areAllProcessesFrozen(ProcessRecord excluding) { for (int i = mProcRecords.size() - 1; i >= 0; i--) { for (int i = mProcRecords.size() - 1; i >= 0; i--) { final ProcessRecord app = mProcRecords.valueAt(i); final ProcessRecord app = mProcRecords.valueAt(i); final ProcessCachedOptimizerRecord opt = app.mOptRecord; final ProcessCachedOptimizerRecord opt = app.mOptRecord; if (!opt.isFrozen()) { if (excluding != app && !opt.isFrozen()) { return false; return false; } } } } return true; return true; } } /** * @return true if all processes in the Uid are frozen, false otherwise. */ @GuardedBy(anyOf = {"mService", "mProcLock"}) public boolean areAllProcessesFrozen() { return areAllProcessesFrozen(null); } @GuardedBy(anyOf = {"mService", "mProcLock"}) @GuardedBy(anyOf = {"mService", "mProcLock"}) public void setFrozen(boolean frozen) { public void setFrozen(boolean frozen) { mUidIsFrozen = frozen; mUidIsFrozen = frozen; Loading