summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/ActivityManager.java12
-rw-r--r--core/java/android/app/ActivityThread.java32
-rw-r--r--core/java/android/app/activity_manager.aconfig7
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"
-}