Merge "Re-evaluate frozen state in CAO.onCleanupApplicationRecordLocked" into udc-dev
This commit is contained in:
@@ -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());
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user