diff options
| author | 2017-12-18 16:45:52 -0800 | |
|---|---|---|
| committer | 2017-12-18 17:05:52 -0800 | |
| commit | bad8d91056e59b77fde1b2d3cc0745137766a31a (patch) | |
| tree | 07aa2d204fec9521fe4bb10ea7bb540047a02901 | |
| parent | d2cafca0901b66512a22eca3fe89a50ff8d14271 (diff) | |
Make TOP_SLEEPING procstate more like a cached process.
When an app is on the top of the activity stack but the screen
is not on, this doesn't really count as a top app in the normal
sense. In particular, we'd really like to apply the normal
restrictions we have on background and cached apps: no network
access, no ability to use wake locks, etc. (In other words, in
this state the app's activity is stopped, so from its perspective
it is no different than the user leaving it to go to another app.)
To do this, we change the order of the TOP_SLEEPING proc state
out from the range of foreground states down to between the
cached and background states.
Test: ActivityManagerProcessStateTest
Bug: 70808931
Change-Id: I994caba8c27553a452de75efa358be0e683d046f
| -rw-r--r-- | api/current.txt | 3 | ||||
| -rw-r--r-- | core/java/android/app/ActivityManager.java | 66 | ||||
| -rw-r--r-- | core/java/android/os/BatteryStats.java | 28 | ||||
| -rw-r--r-- | core/java/com/android/internal/app/procstats/ProcessState.java | 2 | ||||
| -rw-r--r-- | core/java/com/android/internal/os/BatteryStatsImpl.java | 8 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 14 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ProcessList.java | 26 |
7 files changed, 89 insertions, 58 deletions
diff --git a/api/current.txt b/api/current.txt index ba359958ce78..f1d2fe170ec8 100644 --- a/api/current.txt +++ b/api/current.txt @@ -3961,7 +3961,8 @@ package android.app { field public static final int IMPORTANCE_PERCEPTIBLE = 230; // 0xe6 field public static final int IMPORTANCE_PERCEPTIBLE_PRE_26 = 130; // 0x82 field public static final int IMPORTANCE_SERVICE = 300; // 0x12c - field public static final int IMPORTANCE_TOP_SLEEPING = 150; // 0x96 + field public static final int IMPORTANCE_TOP_SLEEPING = 325; // 0x145 + field public static final deprecated int IMPORTANCE_TOP_SLEEPING_PRE_28 = 150; // 0x96 field public static final int IMPORTANCE_VISIBLE = 200; // 0xc8 field public static final int REASON_PROVIDER_IN_USE = 1; // 0x1 field public static final int REASON_SERVICE_IN_USE = 2; // 0x2 diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 55227a630f99..27a7f7955fa0 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -458,16 +458,17 @@ public class ActivityManager { public static final int USER_OP_ERROR_RELATED_USERS_CANNOT_STOP = -4; /** + * @hide * Process states, describing the kind of state a particular process is in. * When updating these, make sure to also check all related references to the * constant in code, and update these arrays: * - * com.android.internal.app.procstats.ProcessState#PROCESS_STATE_TO_STATE - * com.android.server.am.ProcessList#sProcStateToProcMem - * com.android.server.am.ProcessList#sFirstAwakePssTimes - * com.android.server.am.ProcessList#sSameAwakePssTimes - * com.android.server.am.ProcessList#sTestFirstPssTimes - * com.android.server.am.ProcessList#sTestSamePssTimes + * @see com.android.internal.app.procstats.ProcessState#PROCESS_STATE_TO_STATE + * @see com.android.server.am.ProcessList#sProcStateToProcMem + * @see com.android.server.am.ProcessList#sFirstAwakePssTimes + * @see com.android.server.am.ProcessList#sSameAwakePssTimes + * @see com.android.server.am.ProcessList#sTestFirstPssTimes + * @see com.android.server.am.ProcessList#sTestSamePssTimes */ /** @hide Not a real process state. */ @@ -489,31 +490,31 @@ public class ActivityManager { /** @hide Process is hosting a foreground service. */ public static final int PROCESS_STATE_FOREGROUND_SERVICE = 4; - /** @hide Same as {@link #PROCESS_STATE_TOP} but while device is sleeping. */ - public static final int PROCESS_STATE_TOP_SLEEPING = 5; - /** @hide Process is important to the user, and something they are aware of. */ - public static final int PROCESS_STATE_IMPORTANT_FOREGROUND = 6; + public static final int PROCESS_STATE_IMPORTANT_FOREGROUND = 5; /** @hide Process is important to the user, but not something they are aware of. */ - public static final int PROCESS_STATE_IMPORTANT_BACKGROUND = 7; + public static final int PROCESS_STATE_IMPORTANT_BACKGROUND = 6; /** @hide Process is in the background transient so we will try to keep running. */ - public static final int PROCESS_STATE_TRANSIENT_BACKGROUND = 8; + public static final int PROCESS_STATE_TRANSIENT_BACKGROUND = 7; /** @hide Process is in the background running a backup/restore operation. */ - public static final int PROCESS_STATE_BACKUP = 9; + public static final int PROCESS_STATE_BACKUP = 8; /** @hide Process is in the background running a service. Unlike oom_adj, this level * is used for both the normal running in background state and the executing * operations state. */ - public static final int PROCESS_STATE_SERVICE = 10; + public static final int PROCESS_STATE_SERVICE = 9; /** @hide Process is in the background running a receiver. Note that from the * perspective of oom_adj, receivers run at a higher foreground level, but for our * prioritization here that is not necessary and putting them below services means * many fewer changes in some process states as they receive broadcasts. */ - public static final int PROCESS_STATE_RECEIVER = 11; + public static final int PROCESS_STATE_RECEIVER = 10; + + /** @hide Same as {@link #PROCESS_STATE_TOP} but while device is sleeping. */ + public static final int PROCESS_STATE_TOP_SLEEPING = 11; /** @hide Process is in the background, but it can't restore its state so we want * to try to avoid killing it. */ @@ -2897,13 +2898,13 @@ public class ActivityManager { public static final int IMPORTANCE_FOREGROUND_SERVICE = 125; /** - * Constant for {@link #importance}: This process is running the foreground - * UI, but the device is asleep so it is not visible to the user. This means - * the user is not really aware of the process, because they can not see or - * interact with it, but it is quite important because it what they expect to - * return to once unlocking the device. + * @deprecated Pre-{@link android.os.Build.VERSION_CODES#P} version of + * {@link #IMPORTANCE_TOP_SLEEPING}. As of Android + * {@link android.os.Build.VERSION_CODES#P}, this is considered much less + * important since we want to reduce what apps can do when the screen is off. */ - public static final int IMPORTANCE_TOP_SLEEPING = 150; + @Deprecated + public static final int IMPORTANCE_TOP_SLEEPING_PRE_28 = 150; /** * Constant for {@link #importance}: This process is running something @@ -2964,6 +2965,15 @@ public class ActivityManager { public static final int IMPORTANCE_SERVICE = 300; /** + * Constant for {@link #importance}: This process is running the foreground + * UI, but the device is asleep so it is not visible to the user. Though the + * system will try hard to keep its process from being killed, in all other + * ways we consider it a kind of cached process, with the limitations that go + * along with that state: network access, running background services, etc. + */ + public static final int IMPORTANCE_TOP_SLEEPING = 325; + + /** * Constant for {@link #importance}: This process is running an * application that can not save its state, and thus can't be killed * while in the background. This will be used with apps that have @@ -3008,14 +3018,14 @@ public class ActivityManager { return IMPORTANCE_CACHED; } else if (procState == PROCESS_STATE_HEAVY_WEIGHT) { return IMPORTANCE_CANT_SAVE_STATE; + } else if (procState >= PROCESS_STATE_TOP_SLEEPING) { + return IMPORTANCE_TOP_SLEEPING; } else if (procState >= PROCESS_STATE_SERVICE) { return IMPORTANCE_SERVICE; } else if (procState >= PROCESS_STATE_TRANSIENT_BACKGROUND) { return IMPORTANCE_PERCEPTIBLE; } else if (procState >= PROCESS_STATE_IMPORTANT_FOREGROUND) { return IMPORTANCE_VISIBLE; - } else if (procState >= PROCESS_STATE_TOP_SLEEPING) { - return IMPORTANCE_TOP_SLEEPING; } else if (procState >= PROCESS_STATE_FOREGROUND_SERVICE) { return IMPORTANCE_FOREGROUND_SERVICE; } else { @@ -3049,6 +3059,8 @@ public class ActivityManager { switch (importance) { case IMPORTANCE_PERCEPTIBLE: return IMPORTANCE_PERCEPTIBLE_PRE_26; + case IMPORTANCE_TOP_SLEEPING: + return IMPORTANCE_TOP_SLEEPING_PRE_28; case IMPORTANCE_CANT_SAVE_STATE: return IMPORTANCE_CANT_SAVE_STATE_PRE_26; } @@ -3062,16 +3074,18 @@ public class ActivityManager { return PROCESS_STATE_NONEXISTENT; } else if (importance >= IMPORTANCE_CACHED) { return PROCESS_STATE_HOME; - } else if (importance == IMPORTANCE_CANT_SAVE_STATE) { + } else if (importance >= IMPORTANCE_CANT_SAVE_STATE) { return PROCESS_STATE_HEAVY_WEIGHT; + } else if (importance >= IMPORTANCE_TOP_SLEEPING) { + return PROCESS_STATE_TOP_SLEEPING; } else if (importance >= IMPORTANCE_SERVICE) { return PROCESS_STATE_SERVICE; } else if (importance >= IMPORTANCE_PERCEPTIBLE) { return PROCESS_STATE_TRANSIENT_BACKGROUND; } else if (importance >= IMPORTANCE_VISIBLE) { return PROCESS_STATE_IMPORTANT_FOREGROUND; - } else if (importance >= IMPORTANCE_TOP_SLEEPING) { - return PROCESS_STATE_TOP_SLEEPING; + } else if (importance >= IMPORTANCE_TOP_SLEEPING_PRE_28) { + return PROCESS_STATE_FOREGROUND_SERVICE; } else if (importance >= IMPORTANCE_FOREGROUND_SERVICE) { return PROCESS_STATE_FOREGROUND_SERVICE; } else { diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index 2e9eeb16a887..9513b9bfea03 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -658,32 +658,40 @@ public abstract class BatteryStats implements Parcelable { */ public static final int PROCESS_STATE_FOREGROUND_SERVICE = 1; /** - * Time this uid has any process that is top while the device is sleeping, but none - * in the "foreground service" or better state. - */ - public static final int PROCESS_STATE_TOP_SLEEPING = 2; - /** * Time this uid has any process in an active foreground state, but none in the * "top sleeping" or better state. */ - public static final int PROCESS_STATE_FOREGROUND = 3; + public static final int PROCESS_STATE_FOREGROUND = 2; /** * Time this uid has any process in an active background state, but none in the * "foreground" or better state. */ - public static final int PROCESS_STATE_BACKGROUND = 4; + public static final int PROCESS_STATE_BACKGROUND = 3; + /** + * Time this uid has any process that is top while the device is sleeping, but not + * active for any other reason. We kind-of consider it a kind of cached process + * for execution restrictions. + */ + public static final int PROCESS_STATE_TOP_SLEEPING = 4; + /** + * Time this uid has any process that is in the background but it has an activity + * marked as "can't save state". This is essentially a cached process, though the + * system will try much harder than normal to avoid killing it. + */ + public static final int PROCESS_STATE_HEAVY_WEIGHT = 5; /** * Time this uid has any processes that are sitting around cached, not in one of the * other active states. */ - public static final int PROCESS_STATE_CACHED = 5; + public static final int PROCESS_STATE_CACHED = 6; /** * Total number of process states we track. */ - public static final int NUM_PROCESS_STATE = 6; + public static final int NUM_PROCESS_STATE = 7; static final String[] PROCESS_STATE_NAMES = { - "Top", "Fg Service", "Top Sleeping", "Foreground", "Background", "Cached" + "Top", "Fg Service", "Foreground", "Background", "Top Sleeping", "Heavy Weight", + "Cached" }; public abstract long getProcessStateTime(int state, long elapsedRealtimeUs, int which); diff --git a/core/java/com/android/internal/app/procstats/ProcessState.java b/core/java/com/android/internal/app/procstats/ProcessState.java index 3aca7981f92f..efc9c02f1da9 100644 --- a/core/java/com/android/internal/app/procstats/ProcessState.java +++ b/core/java/com/android/internal/app/procstats/ProcessState.java @@ -91,13 +91,13 @@ public final class ProcessState { STATE_TOP, // ActivityManager.PROCESS_STATE_TOP STATE_IMPORTANT_FOREGROUND, // ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE STATE_IMPORTANT_FOREGROUND, // ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE - STATE_TOP, // ActivityManager.PROCESS_STATE_TOP_SLEEPING STATE_IMPORTANT_FOREGROUND, // ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND STATE_IMPORTANT_BACKGROUND, // ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND STATE_IMPORTANT_BACKGROUND, // ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND STATE_BACKUP, // ActivityManager.PROCESS_STATE_BACKUP STATE_SERVICE, // ActivityManager.PROCESS_STATE_SERVICE STATE_RECEIVER, // ActivityManager.PROCESS_STATE_RECEIVER + STATE_TOP, // ActivityManager.PROCESS_STATE_TOP_SLEEPING STATE_HEAVY_WEIGHT, // ActivityManager.PROCESS_STATE_HEAVY_WEIGHT STATE_HOME, // ActivityManager.PROCESS_STATE_HOME STATE_LAST_ACTIVITY, // ActivityManager.PROCESS_STATE_LAST_ACTIVITY diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index bef247f52da4..6510a70c0cf6 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -120,7 +120,7 @@ public class BatteryStatsImpl extends BatteryStats { private static final int MAGIC = 0xBA757475; // 'BATSTATS' // Current on-disk Parcel version - private static final int VERSION = 170 + (USE_OLD_HISTORY ? 1000 : 0); + private static final int VERSION = 171 + (USE_OLD_HISTORY ? 1000 : 0); // Maximum number of items we will record in the history. private static final int MAX_HISTORY_ITEMS; @@ -8678,13 +8678,15 @@ public class BatteryStatsImpl extends BatteryStats { } else if (procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) { // Persistent and other foreground states go here. uidRunningState = PROCESS_STATE_FOREGROUND_SERVICE; - } else if (procState <= ActivityManager.PROCESS_STATE_TOP_SLEEPING) { - uidRunningState = PROCESS_STATE_TOP_SLEEPING; } else if (procState <= ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND) { // Persistent and other foreground states go here. uidRunningState = PROCESS_STATE_FOREGROUND; } else if (procState <= ActivityManager.PROCESS_STATE_RECEIVER) { uidRunningState = PROCESS_STATE_BACKGROUND; + } else if (procState <= ActivityManager.PROCESS_STATE_TOP_SLEEPING) { + uidRunningState = PROCESS_STATE_TOP_SLEEPING; + } else if (procState <= ActivityManager.PROCESS_STATE_HEAVY_WEIGHT) { + uidRunningState = PROCESS_STATE_HEAVY_WEIGHT; } else { uidRunningState = PROCESS_STATE_CACHED; } diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 0aa66a72c312..4a2f0f6b1e21 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -14145,8 +14145,7 @@ public class ActivityManagerService extends IActivityManager.Stub for (int i = mLruProcesses.size() - 1 ; i >= 0 ; i--) { ProcessRecord proc = mLruProcesses.get(i); if (proc.notCachedSinceIdle) { - if (proc.setProcState != ActivityManager.PROCESS_STATE_TOP_SLEEPING - && proc.setProcState >= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE + if (proc.setProcState >= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE && proc.setProcState <= ActivityManager.PROCESS_STATE_SERVICE) { if (doKilling && proc.initialIdlePss != 0 && proc.lastPss > ((proc.initialIdlePss*3)/2)) { @@ -21336,7 +21335,7 @@ public class ActivityManagerService extends IActivityManager.Stub int procState; boolean foregroundActivities = false; mTmpBroadcastQueue.clear(); - if (app == TOP_APP) { + if (PROCESS_STATE_CUR_TOP == ActivityManager.PROCESS_STATE_TOP && app == TOP_APP) { // The last app on the list is the foreground app. adj = ProcessList.FOREGROUND_APP_ADJ; schedGroup = ProcessList.SCHED_GROUP_TOP_APP; @@ -21372,6 +21371,13 @@ public class ActivityManagerService extends IActivityManager.Stub procState = ActivityManager.PROCESS_STATE_SERVICE; if (DEBUG_OOM_ADJ_REASON) Slog.d(TAG, "Making exec-service: " + app); //Slog.i(TAG, "EXEC " + (app.execServicesFg ? "FG" : "BG") + ": " + app); + } else if (app == TOP_APP) { + adj = ProcessList.FOREGROUND_APP_ADJ; + schedGroup = ProcessList.SCHED_GROUP_BACKGROUND; + app.adjType = "top-sleeping"; + foregroundActivities = true; + procState = PROCESS_STATE_CUR_TOP; + if (DEBUG_OOM_ADJ_REASON) Slog.d(TAG, "Making top: " + app); } else { // As far as we know the process is empty. We may change our mind later. schedGroup = ProcessList.SCHED_GROUP_BACKGROUND; @@ -22820,7 +22826,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (app.curProcState <= ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE) { isInteraction = true; app.fgInteractionTime = 0; - } else if (app.curProcState <= ActivityManager.PROCESS_STATE_TOP_SLEEPING) { + } else if (app.curProcState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) { if (app.fgInteractionTime == 0) { app.fgInteractionTime = nowElapsed; isInteraction = false; diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index c9c26ef18c39..ab5d64c48ac8 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -364,9 +364,6 @@ public final class ProcessList { case ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE: procState = "FGS "; break; - case ActivityManager.PROCESS_STATE_TOP_SLEEPING: - procState = "TPSL"; - break; case ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND: procState = "IMPF"; break; @@ -385,6 +382,9 @@ public final class ProcessList { case ActivityManager.PROCESS_STATE_RECEIVER: procState = "RCVR"; break; + case ActivityManager.PROCESS_STATE_TOP_SLEEPING: + procState = "TPSL"; + break; case ActivityManager.PROCESS_STATE_HEAVY_WEIGHT: procState = "HVY "; break; @@ -485,13 +485,13 @@ public final class ProcessList { PROC_MEM_TOP, // ActivityManager.PROCESS_STATE_TOP PROC_MEM_IMPORTANT, // ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE PROC_MEM_IMPORTANT, // ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE - PROC_MEM_TOP, // ActivityManager.PROCESS_STATE_TOP_SLEEPING PROC_MEM_IMPORTANT, // ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND PROC_MEM_IMPORTANT, // ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND PROC_MEM_IMPORTANT, // ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND PROC_MEM_IMPORTANT, // ActivityManager.PROCESS_STATE_BACKUP PROC_MEM_SERVICE, // ActivityManager.PROCESS_STATE_SERVICE PROC_MEM_CACHED, // ActivityManager.PROCESS_STATE_RECEIVER + PROC_MEM_TOP, // ActivityManager.PROCESS_STATE_TOP_SLEEPING PROC_MEM_IMPORTANT, // ActivityManager.PROCESS_STATE_HEAVY_WEIGHT PROC_MEM_CACHED, // ActivityManager.PROCESS_STATE_HOME PROC_MEM_CACHED, // ActivityManager.PROCESS_STATE_LAST_ACTIVITY @@ -507,14 +507,14 @@ public final class ProcessList { PSS_FIRST_TOP_INTERVAL, // ActivityManager.PROCESS_STATE_TOP PSS_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE PSS_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE - PSS_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_TOP_SLEEPING PSS_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND PSS_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND PSS_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND PSS_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_BACKUP PSS_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_SERVICE PSS_FIRST_CACHED_INTERVAL, // ActivityManager.PROCESS_STATE_RECEIVER - PSS_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_HEAVY_WEIGHT + PSS_FIRST_CACHED_INTERVAL, // ActivityManager.PROCESS_STATE_TOP_SLEEPING + PSS_FIRST_CACHED_INTERVAL, // ActivityManager.PROCESS_STATE_HEAVY_WEIGHT PSS_FIRST_CACHED_INTERVAL, // ActivityManager.PROCESS_STATE_HOME PSS_FIRST_CACHED_INTERVAL, // ActivityManager.PROCESS_STATE_LAST_ACTIVITY PSS_FIRST_CACHED_INTERVAL, // ActivityManager.PROCESS_STATE_CACHED_ACTIVITY @@ -529,14 +529,14 @@ public final class ProcessList { PSS_SHORT_INTERVAL, // ActivityManager.PROCESS_STATE_TOP PSS_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE PSS_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE - PSS_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_TOP_SLEEPING PSS_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND PSS_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND PSS_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND PSS_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_BACKUP PSS_SAME_SERVICE_INTERVAL, // ActivityManager.PROCESS_STATE_SERVICE PSS_SAME_SERVICE_INTERVAL, // ActivityManager.PROCESS_STATE_RECEIVER - PSS_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_HEAVY_WEIGHT + PSS_SAME_CACHED_INTERVAL, // ActivityManager.PROCESS_STATE_TOP_SLEEPING + PSS_SAME_CACHED_INTERVAL, // ActivityManager.PROCESS_STATE_HEAVY_WEIGHT PSS_SAME_CACHED_INTERVAL, // ActivityManager.PROCESS_STATE_HOME PSS_SAME_CACHED_INTERVAL, // ActivityManager.PROCESS_STATE_LAST_ACTIVITY PSS_SAME_CACHED_INTERVAL, // ActivityManager.PROCESS_STATE_CACHED_ACTIVITY @@ -549,15 +549,15 @@ public final class ProcessList { PSS_TEST_FIRST_TOP_INTERVAL, // ActivityManager.PROCESS_STATE_PERSISTENT PSS_TEST_FIRST_TOP_INTERVAL, // ActivityManager.PROCESS_STATE_PERSISTENT_UI PSS_TEST_FIRST_TOP_INTERVAL, // ActivityManager.PROCESS_STATE_TOP - PSS_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE - PSS_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE - PSS_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_TOP_SLEEPING + PSS_TEST_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE + PSS_TEST_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE PSS_TEST_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND PSS_TEST_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND PSS_TEST_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND PSS_TEST_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_BACKUP PSS_TEST_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_SERVICE PSS_TEST_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_RECEIVER + PSS_TEST_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_TOP_SLEEPING PSS_TEST_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_HEAVY_WEIGHT PSS_TEST_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_HOME PSS_TEST_FIRST_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_LAST_ACTIVITY @@ -573,14 +573,14 @@ public final class ProcessList { PSS_TEST_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_TOP PSS_TEST_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE PSS_TEST_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE - PSS_TEST_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_TOP_SLEEPING PSS_TEST_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND PSS_TEST_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND PSS_TEST_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND PSS_TEST_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_BACKUP PSS_TEST_SAME_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_SERVICE PSS_TEST_SAME_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_RECEIVER - PSS_TEST_SAME_IMPORTANT_INTERVAL, // ActivityManager.PROCESS_STATE_HEAVY_WEIGHT + PSS_TEST_SAME_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_TOP_SLEEPING + PSS_TEST_SAME_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_HEAVY_WEIGHT PSS_TEST_SAME_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_HOME PSS_TEST_SAME_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_LAST_ACTIVITY PSS_TEST_SAME_BACKGROUND_INTERVAL, // ActivityManager.PROCESS_STATE_CACHED_ACTIVITY |