Loading core/java/android/app/ActivityManager.java +16 −13 Original line number Diff line number Diff line Loading @@ -458,42 +458,45 @@ public class ActivityManager { /** @hide Process is important to the user, but not something they are aware of. */ public static final int PROCESS_STATE_IMPORTANT_BACKGROUND = 7; /** @hide Process is in the background transient so we will try to keep running. */ public static final int PROCESS_STATE_TRANSIENT_BACKGROUND = 8; /** @hide Process is in the background running a backup/restore operation. */ public static final int PROCESS_STATE_BACKUP = 8; public static final int PROCESS_STATE_BACKUP = 9; /** @hide Process is in the background, but it can't restore its state so we want * to try to avoid killing it. */ public static final int PROCESS_STATE_HEAVY_WEIGHT = 9; public static final int PROCESS_STATE_HEAVY_WEIGHT = 10; /** @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 = 11; /** @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 = 12; /** @hide Process is in the background but hosts the home activity. */ public static final int PROCESS_STATE_HOME = 12; public static final int PROCESS_STATE_HOME = 13; /** @hide Process is in the background but hosts the last shown activity. */ public static final int PROCESS_STATE_LAST_ACTIVITY = 13; public static final int PROCESS_STATE_LAST_ACTIVITY = 14; /** @hide Process is being cached for later use and contains activities. */ public static final int PROCESS_STATE_CACHED_ACTIVITY = 14; public static final int PROCESS_STATE_CACHED_ACTIVITY = 15; /** @hide Process is being cached for later use and is a client of another cached * process that contains activities. */ public static final int PROCESS_STATE_CACHED_ACTIVITY_CLIENT = 15; public static final int PROCESS_STATE_CACHED_ACTIVITY_CLIENT = 16; /** @hide Process is being cached for later use and is empty. */ public static final int PROCESS_STATE_CACHED_EMPTY = 16; public static final int PROCESS_STATE_CACHED_EMPTY = 17; /** @hide Process does not exist. */ public static final int PROCESS_STATE_NONEXISTENT = 17; public static final int PROCESS_STATE_NONEXISTENT = 18; /** @hide The lowest process state number */ public static final int MIN_PROCESS_STATE = PROCESS_STATE_PERSISTENT; Loading @@ -503,7 +506,7 @@ public class ActivityManager { /** @hide Should this process state be considered a background state? */ public static final boolean isProcStateBackground(int procState) { return procState >= PROCESS_STATE_BACKUP; return procState >= PROCESS_STATE_TRANSIENT_BACKGROUND; } /** @hide requestType for assist context: only basic information. */ Loading Loading @@ -3233,7 +3236,7 @@ public class ActivityManager { return IMPORTANCE_SERVICE; } else if (procState > PROCESS_STATE_HEAVY_WEIGHT) { return IMPORTANCE_CANT_SAVE_STATE; } else if (procState >= PROCESS_STATE_IMPORTANT_BACKGROUND) { } else if (procState >= PROCESS_STATE_TRANSIENT_BACKGROUND) { return IMPORTANCE_PERCEPTIBLE; } else if (procState >= PROCESS_STATE_IMPORTANT_FOREGROUND) { return IMPORTANCE_VISIBLE; Loading Loading @@ -3290,7 +3293,7 @@ public class ActivityManager { } else if (importance > IMPORTANCE_CANT_SAVE_STATE) { return PROCESS_STATE_HEAVY_WEIGHT; } else if (importance >= IMPORTANCE_PERCEPTIBLE) { return PROCESS_STATE_IMPORTANT_BACKGROUND; return PROCESS_STATE_TRANSIENT_BACKGROUND; } else if (importance >= IMPORTANCE_VISIBLE) { return PROCESS_STATE_IMPORTANT_FOREGROUND; } else if (importance >= IMPORTANCE_TOP_SLEEPING) { Loading core/java/android/content/Context.java +6 −0 Original line number Diff line number Diff line Loading @@ -322,6 +322,12 @@ public abstract class Context { */ public static final int BIND_ADJUST_WITH_ACTIVITY = 0x0080; /** * @hide Flag for {@link #bindService}: like {@link #BIND_NOT_FOREGROUND}, but puts it * up in to the important background state (instead of transient). */ public static final int BIND_IMPORTANT_BACKGROUND = 0x00800000; /** * @hide Flag for {@link #bindService}: allows application hosting service to manage whitelists * such as temporary allowing a {@code PendingIntent} to bypass Power Save mode. Loading core/java/android/provider/Settings.java +32 −2 Original line number Diff line number Diff line Loading @@ -723,6 +723,19 @@ public final class Settings { public static final String ACTION_APPLICATION_DETAILS_SETTINGS = "android.settings.APPLICATION_DETAILS_SETTINGS"; /** * Activity Action: Show list of applications that have been running * foreground services (to the user "running in the background"). * <p> * Input: Extras "packages" is a string array of package names. * <p> * Output: Nothing. * @hide */ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_FOREGROUND_SERVICES_SETTINGS = "android.settings.FOREGROUND_SERVICES_SETTINGS"; /** * Activity Action: Show screen for controlling which apps can ignore battery optimizations. * <p> Loading Loading @@ -8980,13 +8993,30 @@ public final class Settings { * Activity manager specific settings. * This is encoded as a key=value list, separated by commas. Ex: * * "enforce_bg_check=true,max_cached_processes=24" * "gc_timeout=5000,max_cached_processes=24" * * The following keys are supported: * * <pre> * enforce_bg_check (boolean) * max_cached_processes (int) * background_settle_time (long) * foreground_service_ui_min_time (long) * content_provider_retain_time (long) * gc_timeout (long) * gc_min_interval (long) * full_pss_min_interval (long) * full_pss_lowered_interval (long) * power_check_delay (long) * wake_lock_min_check_duration (long) * cpu_min_check_duration (long) * service_usage_interaction_time (long) * usage_stats_interaction_interval (long) * service_restart_duration (long) * service_reset_run_duration (long) * service_restart_duration_factor (int) * service_min_restart_time_between (long) * service_max_inactivity (long) * service_bg_start_timeout (long) * </pre> * * <p> Loading core/java/com/android/internal/app/procstats/ProcessState.java +1 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ public final class ProcessState { 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_HEAVY_WEIGHT, // ActivityManager.PROCESS_STATE_HEAVY_WEIGHT STATE_SERVICE, // ActivityManager.PROCESS_STATE_SERVICE Loading core/java/com/android/internal/notification/SystemNotificationChannels.java +6 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ public class SystemNotificationChannels { public static String ALERTS = "ALERTS"; public static String RETAIL_MODE = "RETAIL_MODE"; public static String USB = "USB"; public static String FOREGROUND_SERVICE = "FOREGROUND_SERVICE"; public static void createAll(Context context) { final NotificationManager nm = context.getSystemService(NotificationManager.class); Loading Loading @@ -125,6 +126,11 @@ public class SystemNotificationChannels { context.getString(R.string.notification_channel_usb), NotificationManager.IMPORTANCE_MIN)); channelsList.add(new NotificationChannel( FOREGROUND_SERVICE, context.getString(R.string.notification_channel_foreground_service), NotificationManager.IMPORTANCE_MIN)); nm.createNotificationChannels(channelsList); } Loading Loading
core/java/android/app/ActivityManager.java +16 −13 Original line number Diff line number Diff line Loading @@ -458,42 +458,45 @@ public class ActivityManager { /** @hide Process is important to the user, but not something they are aware of. */ public static final int PROCESS_STATE_IMPORTANT_BACKGROUND = 7; /** @hide Process is in the background transient so we will try to keep running. */ public static final int PROCESS_STATE_TRANSIENT_BACKGROUND = 8; /** @hide Process is in the background running a backup/restore operation. */ public static final int PROCESS_STATE_BACKUP = 8; public static final int PROCESS_STATE_BACKUP = 9; /** @hide Process is in the background, but it can't restore its state so we want * to try to avoid killing it. */ public static final int PROCESS_STATE_HEAVY_WEIGHT = 9; public static final int PROCESS_STATE_HEAVY_WEIGHT = 10; /** @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 = 11; /** @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 = 12; /** @hide Process is in the background but hosts the home activity. */ public static final int PROCESS_STATE_HOME = 12; public static final int PROCESS_STATE_HOME = 13; /** @hide Process is in the background but hosts the last shown activity. */ public static final int PROCESS_STATE_LAST_ACTIVITY = 13; public static final int PROCESS_STATE_LAST_ACTIVITY = 14; /** @hide Process is being cached for later use and contains activities. */ public static final int PROCESS_STATE_CACHED_ACTIVITY = 14; public static final int PROCESS_STATE_CACHED_ACTIVITY = 15; /** @hide Process is being cached for later use and is a client of another cached * process that contains activities. */ public static final int PROCESS_STATE_CACHED_ACTIVITY_CLIENT = 15; public static final int PROCESS_STATE_CACHED_ACTIVITY_CLIENT = 16; /** @hide Process is being cached for later use and is empty. */ public static final int PROCESS_STATE_CACHED_EMPTY = 16; public static final int PROCESS_STATE_CACHED_EMPTY = 17; /** @hide Process does not exist. */ public static final int PROCESS_STATE_NONEXISTENT = 17; public static final int PROCESS_STATE_NONEXISTENT = 18; /** @hide The lowest process state number */ public static final int MIN_PROCESS_STATE = PROCESS_STATE_PERSISTENT; Loading @@ -503,7 +506,7 @@ public class ActivityManager { /** @hide Should this process state be considered a background state? */ public static final boolean isProcStateBackground(int procState) { return procState >= PROCESS_STATE_BACKUP; return procState >= PROCESS_STATE_TRANSIENT_BACKGROUND; } /** @hide requestType for assist context: only basic information. */ Loading Loading @@ -3233,7 +3236,7 @@ public class ActivityManager { return IMPORTANCE_SERVICE; } else if (procState > PROCESS_STATE_HEAVY_WEIGHT) { return IMPORTANCE_CANT_SAVE_STATE; } else if (procState >= PROCESS_STATE_IMPORTANT_BACKGROUND) { } else if (procState >= PROCESS_STATE_TRANSIENT_BACKGROUND) { return IMPORTANCE_PERCEPTIBLE; } else if (procState >= PROCESS_STATE_IMPORTANT_FOREGROUND) { return IMPORTANCE_VISIBLE; Loading Loading @@ -3290,7 +3293,7 @@ public class ActivityManager { } else if (importance > IMPORTANCE_CANT_SAVE_STATE) { return PROCESS_STATE_HEAVY_WEIGHT; } else if (importance >= IMPORTANCE_PERCEPTIBLE) { return PROCESS_STATE_IMPORTANT_BACKGROUND; return PROCESS_STATE_TRANSIENT_BACKGROUND; } else if (importance >= IMPORTANCE_VISIBLE) { return PROCESS_STATE_IMPORTANT_FOREGROUND; } else if (importance >= IMPORTANCE_TOP_SLEEPING) { Loading
core/java/android/content/Context.java +6 −0 Original line number Diff line number Diff line Loading @@ -322,6 +322,12 @@ public abstract class Context { */ public static final int BIND_ADJUST_WITH_ACTIVITY = 0x0080; /** * @hide Flag for {@link #bindService}: like {@link #BIND_NOT_FOREGROUND}, but puts it * up in to the important background state (instead of transient). */ public static final int BIND_IMPORTANT_BACKGROUND = 0x00800000; /** * @hide Flag for {@link #bindService}: allows application hosting service to manage whitelists * such as temporary allowing a {@code PendingIntent} to bypass Power Save mode. Loading
core/java/android/provider/Settings.java +32 −2 Original line number Diff line number Diff line Loading @@ -723,6 +723,19 @@ public final class Settings { public static final String ACTION_APPLICATION_DETAILS_SETTINGS = "android.settings.APPLICATION_DETAILS_SETTINGS"; /** * Activity Action: Show list of applications that have been running * foreground services (to the user "running in the background"). * <p> * Input: Extras "packages" is a string array of package names. * <p> * Output: Nothing. * @hide */ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_FOREGROUND_SERVICES_SETTINGS = "android.settings.FOREGROUND_SERVICES_SETTINGS"; /** * Activity Action: Show screen for controlling which apps can ignore battery optimizations. * <p> Loading Loading @@ -8980,13 +8993,30 @@ public final class Settings { * Activity manager specific settings. * This is encoded as a key=value list, separated by commas. Ex: * * "enforce_bg_check=true,max_cached_processes=24" * "gc_timeout=5000,max_cached_processes=24" * * The following keys are supported: * * <pre> * enforce_bg_check (boolean) * max_cached_processes (int) * background_settle_time (long) * foreground_service_ui_min_time (long) * content_provider_retain_time (long) * gc_timeout (long) * gc_min_interval (long) * full_pss_min_interval (long) * full_pss_lowered_interval (long) * power_check_delay (long) * wake_lock_min_check_duration (long) * cpu_min_check_duration (long) * service_usage_interaction_time (long) * usage_stats_interaction_interval (long) * service_restart_duration (long) * service_reset_run_duration (long) * service_restart_duration_factor (int) * service_min_restart_time_between (long) * service_max_inactivity (long) * service_bg_start_timeout (long) * </pre> * * <p> Loading
core/java/com/android/internal/app/procstats/ProcessState.java +1 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,7 @@ public final class ProcessState { 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_HEAVY_WEIGHT, // ActivityManager.PROCESS_STATE_HEAVY_WEIGHT STATE_SERVICE, // ActivityManager.PROCESS_STATE_SERVICE Loading
core/java/com/android/internal/notification/SystemNotificationChannels.java +6 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ public class SystemNotificationChannels { public static String ALERTS = "ALERTS"; public static String RETAIL_MODE = "RETAIL_MODE"; public static String USB = "USB"; public static String FOREGROUND_SERVICE = "FOREGROUND_SERVICE"; public static void createAll(Context context) { final NotificationManager nm = context.getSystemService(NotificationManager.class); Loading Loading @@ -125,6 +126,11 @@ public class SystemNotificationChannels { context.getString(R.string.notification_channel_usb), NotificationManager.IMPORTANCE_MIN)); channelsList.add(new NotificationChannel( FOREGROUND_SERVICE, context.getString(R.string.notification_channel_foreground_service), NotificationManager.IMPORTANCE_MIN)); nm.createNotificationChannels(channelsList); } Loading