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

Commit d0025f1e authored by Louis Chang's avatar Louis Chang
Browse files

Stops the repeatedly activity launching app more aggressively

- Reduce the max rapid launch count and expand the launch window
- Remove the task vs. moves the task to back because the
  move-task-to-back operation may be queued up for a separate
  transition, which is not taking effect soon.

Bug: 332441923
Test: verified on the app
Change-Id: Iad5d22c1fa7943de42d9bd3eecc9cda955bf233f
parent 4ce70799
Loading
Loading
Loading
Loading
+11 −5
Original line number Original line Diff line number Diff line
@@ -110,8 +110,8 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio
    private static final String TAG_RELEASE = TAG + POSTFIX_RELEASE;
    private static final String TAG_RELEASE = TAG + POSTFIX_RELEASE;
    private static final String TAG_CONFIGURATION = TAG + POSTFIX_CONFIGURATION;
    private static final String TAG_CONFIGURATION = TAG + POSTFIX_CONFIGURATION;


    private static final int MAX_RAPID_ACTIVITY_LAUNCH_COUNT = 500;
    private static final int MAX_RAPID_ACTIVITY_LAUNCH_COUNT = 50;
    private static final long RAPID_ACTIVITY_LAUNCH_MS = 300;
    private static final long RAPID_ACTIVITY_LAUNCH_MS = 500;
    private static final long RESET_RAPID_ACTIVITY_LAUNCH_MS = 5 * RAPID_ACTIVITY_LAUNCH_MS;
    private static final long RESET_RAPID_ACTIVITY_LAUNCH_MS = 5 * RAPID_ACTIVITY_LAUNCH_MS;


    public static final int STOPPED_STATE_NOT_STOPPED = 0;
    public static final int STOPPED_STATE_NOT_STOPPED = 0;
@@ -631,9 +631,15 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio
        }
        }


        if (mRapidActivityLaunchCount > MAX_RAPID_ACTIVITY_LAUNCH_COUNT) {
        if (mRapidActivityLaunchCount > MAX_RAPID_ACTIVITY_LAUNCH_COUNT) {
            Slog.w(TAG, "Killing " + mPid + " because of rapid activity launch");
            mRapidActivityLaunchCount = 0;
            r.getRootTask().moveTaskToBack(r.getTask());
            final Task task = r.getTask();
            mAtm.mH.post(() -> mAtm.mAmInternal.killProcess(mName, mUid, "rapidActivityLaunch"));
            Slog.w(TAG, "Removing task " + task.mTaskId + " because of rapid activity launch");
            mAtm.mH.post(() -> {
                synchronized (mAtm.mGlobalLock) {
                    task.removeImmediately("rapid-activity-launch");
                }
                mAtm.mAmInternal.killProcess(mName, mUid, "rapidActivityLaunch");
            });
        }
        }
    }
    }