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

Commit a0be2d5c 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 am: c9c23976

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

Change-Id: Ie87188285f12c8d533ce053c1626a8080e04b67c
parents d336d881 c9c23976
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
@@ -16318,8 +16318,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()));