diff options
| -rw-r--r-- | core/java/android/app/ActivityManager.java | 12 | ||||
| -rw-r--r-- | core/java/android/app/ActivityThread.java | 32 | ||||
| -rw-r--r-- | core/java/android/app/activity_manager.aconfig | 7 |
3 files changed, 17 insertions, 34 deletions
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 6c972c87d089..b447897733e1 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -1180,18 +1180,6 @@ public class ActivityManager { return procState == PROCESS_STATE_FOREGROUND_SERVICE; } - /** @hide Should this process state be considered jank perceptible? */ - public static final boolean isProcStateJankPerceptible(int procState) { - if (Flags.jankPerceptibleNarrow()) { - return procState == PROCESS_STATE_PERSISTENT_UI - || procState == PROCESS_STATE_TOP - || procState == PROCESS_STATE_IMPORTANT_FOREGROUND - || procState == PROCESS_STATE_TOP_SLEEPING; - } else { - return !isProcStateCached(procState); - } - } - /** @hide requestType for assist context: only basic information. */ public static final int ASSIST_CONTEXT_BASIC = 0; diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index a95ce0e24a03..60b8f80d8f2d 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -3911,7 +3911,12 @@ public final class ActivityThread extends ClientTransactionHandler if (mLastProcessState == processState) { return; } - updateVmProcessState(mLastProcessState, processState); + // Do not issue a transitional GC if we are transitioning between 2 cached states. + // Only update if the state flips between cached and uncached or vice versa + if (ActivityManager.isProcStateCached(mLastProcessState) + != ActivityManager.isProcStateCached(processState)) { + updateVmProcessState(processState); + } mLastProcessState = processState; if (localLOGV) { Slog.i(TAG, "******************* PROCESS STATE CHANGED TO: " + processState @@ -3920,21 +3925,18 @@ public final class ActivityThread extends ClientTransactionHandler } } - /** Converts a process state to a VM process state. */ - private static int toVmProcessState(int processState) { - final int state = ActivityManager.isProcStateJankPerceptible(processState) - ? VM_PROCESS_STATE_JANK_PERCEPTIBLE - : VM_PROCESS_STATE_JANK_IMPERCEPTIBLE; - return state; - } - /** Update VM state based on ActivityManager.PROCESS_STATE_* constants. */ - private void updateVmProcessState(int lastProcessState, int newProcessState) { - final int state = toVmProcessState(newProcessState); - if (lastProcessState == PROCESS_STATE_UNKNOWN - || state != toVmProcessState(lastProcessState)) { - VMRuntime.getRuntime().updateProcessState(state); - } + // Currently ART VM only uses state updates for Transitional GC, and thus + // this function initiates a Transitional GC for transitions into Cached apps states. + private void updateVmProcessState(int processState) { + // Only a transition into Cached state should result in a Transitional GC request + // to the ART runtime. Update VM state to JANK_IMPERCEPTIBLE in that case. + // Note that there are 4 possible cached states currently, all of which are + // JANK_IMPERCEPTIBLE from GC point of view. + final int state = ActivityManager.isProcStateCached(processState) + ? VM_PROCESS_STATE_JANK_IMPERCEPTIBLE + : VM_PROCESS_STATE_JANK_PERCEPTIBLE; + VMRuntime.getRuntime().updateProcessState(state); } @Override diff --git a/core/java/android/app/activity_manager.aconfig b/core/java/android/app/activity_manager.aconfig index d4cd02b47e99..1f31ab5d1849 100644 --- a/core/java/android/app/activity_manager.aconfig +++ b/core/java/android/app/activity_manager.aconfig @@ -165,10 +165,3 @@ flag { description: "Control ApplicationStartInfo component field and API" bug: "362537357" } - -flag { - name: "jank_perceptible_narrow" - namespace: "system_performance" - description: "Narrow the scope of Jank Perceptible" - bug: "304837972" -} |