Merge "Revert "Add flag to narrow the meaning of JANK_PERCEPTIBLE."" into main
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 69d3e8d..33ba058 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -1189,18 +1189,6 @@
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 3cc5ff0..27661ce 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -3918,7 +3918,12 @@
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
@@ -3927,21 +3932,18 @@
}
}
- /** 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 21ec585..44940ae 100644
--- a/core/java/android/app/activity_manager.aconfig
+++ b/core/java/android/app/activity_manager.aconfig
@@ -166,10 +166,3 @@
bug: "362537357"
is_exported: true
}
-
-flag {
- name: "jank_perceptible_narrow"
- namespace: "system_performance"
- description: "Narrow the scope of Jank Perceptible"
- bug: "304837972"
-}