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

Commit cfa825ff authored by liulvping's avatar liulvping Committed by Wale Ogunwale
Browse files

Clear pending activity launches when force stop package

https://code.google.com/p/android/issues/detail?id=223731



It is possible that an activity in pending launches be resumed while
it's package was stopped by some other reason, like uninstall pkg.

Test: Current tests pass.
Change-Id: I130ded89cee162aa59ac2bf330f026e49e16ef69
Signed-off-by: default avatarliulvping <liulvping@xiaomi.com>
parent 5b02bb41
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -6126,6 +6126,8 @@ public final class ActivityManagerService extends ActivityManagerNative
                ProcessList.INVALID_ADJ, callerWillRestart, true, doit, evenPersistent,
                packageName == null ? ("stop user " + userId) : ("stop " + packageName));
        didSomething |= mActivityStarter.clearPendingActivityLaunchesLocked(packageName);
        if (mStackSupervisor.finishDisabledPackageActivitiesLocked(
                packageName, null, doit, evenPersistent, userId)) {
            if (!doit) {
+14 −0
Original line number Diff line number Diff line
@@ -2091,4 +2091,18 @@ class ActivityStarter {
        return (flags & Intent.FLAG_ACTIVITY_NEW_DOCUMENT) != 0 &&
                (flags & Intent.FLAG_ACTIVITY_MULTIPLE_TASK) == 0;
    }

    boolean clearPendingActivityLaunchesLocked(String packageName) {
        boolean didSomething = false;

        for (int palNdx = mPendingActivityLaunches.size() - 1; palNdx >= 0; --palNdx) {
            PendingActivityLaunch pal = mPendingActivityLaunches.get(palNdx);
            ActivityRecord r = pal.r;
            if (r != null && r.packageName.equals(packageName)) {
                mPendingActivityLaunches.remove(palNdx);
                didSomething = true;
            }
        }
        return didSomething;
    }
}