Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c9c23976 authored by Hui Yu's avatar Hui Yu Committed by Automerger Merge Worker
Browse files

Merge "[Bugfix] Don't delete mPendingUids if PendingTopPid is added later than...

Merge "[Bugfix] Don't delete mPendingUids if PendingTopPid is added later than updateOomAdj started" am: 8f321a61

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

Change-Id: Ie24ddda890ce027bfaf5984263802756bb838eef
parents 8ac15cac 8f321a61
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -586,8 +586,9 @@ public abstract class ActivityManagerInternal {
    /**
     * Delete uid from the ActivityManagerService PendingStartActivityUids list.
     * @param uid uid
     * @param nowElapsed starting time of updateOomAdj
     */
    public abstract void deletePendingTopUid(int uid);
    public abstract void deletePendingTopUid(int uid, long nowElapsed);

    /**
     * Is the uid in ActivityManagerService PendingStartActivityUids list?
+2 −2
Original line number Diff line number Diff line
@@ -16306,8 +16306,8 @@ public class ActivityManagerService extends IActivityManager.Stub
        }
        @Override
        public void deletePendingTopUid(int uid) {
            mPendingStartActivityUids.delete(uid);
        public void deletePendingTopUid(int uid, long nowElapsed) {
            mPendingStartActivityUids.delete(uid, nowElapsed);
        }
        @Override
+1 −1
Original line number Diff line number Diff line
@@ -1378,7 +1378,7 @@ public class OomAdjuster {
                    mService.mServices.foregroundServiceProcStateChangedLocked(uidRec);
                }
            }
            mService.mInternal.deletePendingTopUid(uidRec.getUid());
            mService.mInternal.deletePendingTopUid(uidRec.getUid(), nowElapsed);
        }
        if (mLocalPowerManager != null) {
            mLocalPowerManager.finishUidChanges();
+8 −2
Original line number Diff line number Diff line
@@ -50,9 +50,15 @@ final class PendingStartActivityUids {
        }
    }

    synchronized void delete(int uid) {
    synchronized void delete(int uid, long nowElapsed) {
        final Pair<Integer, Long> pendingPid = mPendingUids.get(uid);
        if (pendingPid != null) {
            if (nowElapsed < pendingPid.second) {
                Slog.i(TAG,
                        "updateOomAdj start time is before than pendingPid added,"
                        + " don't delete it");
                return;
            }
            final long delay = SystemClock.elapsedRealtime() - pendingPid.second;
            if (delay >= 1000 /*ms*/) {
                Slog.i(TAG,
+1 −1
Original line number Diff line number Diff line
@@ -284,7 +284,7 @@ public class ActivityTaskSupervisorTests extends WindowTestsBase {
                .setCreateActivity(true).build().getTopMostActivity();
        activity2.getTask().setResumedActivity(activity2, "test");

        mAtm.mAmInternal.deletePendingTopUid(activity1.getUid());
        mAtm.mAmInternal.deletePendingTopUid(activity1.getUid(), Long.MAX_VALUE);
        clearInvocations(mAtm);
        activity1.moveFocusableActivityToTop("test");
        assertTrue(mAtm.mAmInternal.isPendingTopUid(activity1.getUid()));