Merge "Don't reset the reported proc state while cleaning up the process" into sc-dev am: cbf8dc63ba

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15357844

Change-Id: I2eebcdb1ff462a8b4a9c04d3dfcb486ef298241b
This commit is contained in:
Jing Ji
2021-07-23 00:21:40 +00:00
committed by Automerger Merge Worker
3 changed files with 14 additions and 8 deletions

View File

@@ -430,7 +430,13 @@ public final class AppExitInfoTracker {
final ApplicationExitInfo info = new ApplicationExitInfo(raw);
final String[] packages = raw.getPackageList();
final int uid = raw.getPackageUid();
int uid = raw.getRealUid();
if (UserHandle.isIsolated(uid)) {
Integer k = mIsolatedUidRecords.getUidByIsolatedUid(uid);
if (k != null) {
uid = k;
}
}
for (int i = 0; i < packages.length; i++) {
addExitInfoInnerLocked(packages[i], uid, info);
}
@@ -833,14 +839,14 @@ public final class AppExitInfoTracker {
pw.println(prefix + "package: " + packageName);
int size = array.size();
for (int i = 0; i < size; i++) {
pw.println(prefix + " Historical Process Exit for userId=" + array.keyAt(i));
pw.println(prefix + " Historical Process Exit for uid=" + array.keyAt(i));
array.valueAt(i).dumpLocked(pw, prefix + " ", sdf);
}
}
@GuardedBy("mLock")
private void addExitInfoInnerLocked(String packageName, int userId, ApplicationExitInfo info) {
AppExitInfoContainer container = mData.get(packageName, userId);
private void addExitInfoInnerLocked(String packageName, int uid, ApplicationExitInfo info) {
AppExitInfoContainer container = mData.get(packageName, uid);
if (container == null) {
container = new AppExitInfoContainer(mAppExitInfoHistoryListSize);
if (UserHandle.isIsolated(info.getRealUid())) {
@@ -851,7 +857,7 @@ public final class AppExitInfoTracker {
} else {
container.mUid = info.getRealUid();
}
mData.put(packageName, userId, container);
mData.put(packageName, uid, container);
}
container.addExitInfoLocked(info);
}
@@ -997,7 +1003,7 @@ public final class AppExitInfoTracker {
info.setPackageList(app.getPackageList());
info.setReason(ApplicationExitInfo.REASON_UNKNOWN);
info.setStatus(0);
info.setImportance(procStateToImportance(app.mState.getSetProcState()));
info.setImportance(procStateToImportance(app.mState.getReportedProcState()));
info.setPss(app.mProfile.getLastPss());
info.setRss(app.mProfile.getLastRss());
info.setTimestamp(timestamp);

View File

@@ -1086,7 +1086,7 @@ final class ProcessStateRecord {
mCurRawAdj = mSetRawAdj = mCurAdj = mSetAdj = mVerifiedAdj = ProcessList.INVALID_ADJ;
mCurCapability = mSetCapability = PROCESS_CAPABILITY_NONE;
mCurSchedGroup = mSetSchedGroup = ProcessList.SCHED_GROUP_BACKGROUND;
mCurProcState = mRepProcState = mCurRawProcState = mSetProcState = mAllowStartFgsState =
mCurProcState = mCurRawProcState = mSetProcState = mAllowStartFgsState =
PROCESS_STATE_NONEXISTENT;
}

View File

@@ -1003,7 +1003,7 @@ public class ApplicationExitInfoTest {
dummyPackageName, dummyClassName), "", definingUid));
}
app.mServices.setConnectionGroup(connectionGroup);
app.mState.setSetProcState(procState);
app.mState.setReportedProcState(procState);
app.mProfile.setLastMemInfo(spy(new Debug.MemoryInfo()));
app.mProfile.setLastPss(pss);
app.mProfile.setLastRss(rss);