Merge "Fix issue #65359137: Apps with target API 26 can bypass background..." into oc-mr1-dev

This commit is contained in:
TreeHugger Robot
2017-09-06 19:54:00 +00:00
committed by Android (Google) Code Review

View File

@@ -22875,6 +22875,8 @@ public class ActivityManagerService extends IActivityManager.Stub
requestPssAllProcsLocked(now, false, mProcessStats.isMemFactorLowered()); requestPssAllProcsLocked(now, false, mProcessStats.isMemFactorLowered());
} }
ArrayList<UidRecord> becameIdle = null;
// Update from any uid changes. // Update from any uid changes.
if (mLocalPowerManager != null) { if (mLocalPowerManager != null) {
mLocalPowerManager.startUidChanges(); mLocalPowerManager.startUidChanges();
@@ -22907,6 +22909,10 @@ public class ActivityManagerService extends IActivityManager.Stub
} }
if (uidRec.idle && !uidRec.setIdle) { if (uidRec.idle && !uidRec.setIdle) {
uidChange = UidRecord.CHANGE_IDLE; uidChange = UidRecord.CHANGE_IDLE;
if (becameIdle == null) {
becameIdle = new ArrayList<>();
}
becameIdle.add(uidRec);
} }
} else { } else {
if (uidRec.idle) { if (uidRec.idle) {
@@ -22938,6 +22944,14 @@ public class ActivityManagerService extends IActivityManager.Stub
mLocalPowerManager.finishUidChanges(); mLocalPowerManager.finishUidChanges();
} }
if (becameIdle != null) {
// If we have any new uids that became idle this time, we need to make sure
// they aren't left with running services.
for (int i = becameIdle.size() - 1; i >= 0; i--) {
mServices.stopInBackgroundLocked(becameIdle.get(i).uid);
}
}
if (mProcessStats.shouldWriteNowLocked(now)) { if (mProcessStats.shouldWriteNowLocked(now)) {
mHandler.post(new Runnable() { mHandler.post(new Runnable() {
@Override public void run() { @Override public void run() {