summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Ballesio <balejs@google.com>2020-05-06 16:35:44 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-05-06 16:35:44 +0000
commitce9b47859da46b7cc6ee228dfd6e06233ad189d8 (patch)
tree1ee5c5c6208caf153ca9d9977e30277a313f9624
parent971448afb67e4f4b6db031fabc07a0802f45e480 (diff)
parent6623918e2f7645dc09d5217ab74c14dcb5c54a2f (diff)
Merge changes from topic "developer option for app freezer" into rvc-dev
* changes: Resources and strings for freezer settings Settings option to enable/disable the app freezer ActivityManager API to check availability of app freezer
-rw-r--r--core/java/android/app/IActivityManager.aidl5
-rwxr-xr-xcore/java/android/provider/Settings.java8
-rw-r--r--core/proto/android/providers/settings/global.proto3
-rw-r--r--packages/SettingsLib/res/values/arrays.xml14
-rw-r--r--packages/SettingsLib/res/values/strings.xml8
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java3
-rw-r--r--packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java3
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java11
-rw-r--r--services/core/java/com/android/server/am/CachedAppOptimizer.java11
9 files changed, 62 insertions, 4 deletions
diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl
index 833bfed573b2..496ad0c99dfe 100644
--- a/core/java/android/app/IActivityManager.aidl
+++ b/core/java/android/app/IActivityManager.aidl
@@ -673,4 +673,9 @@ interface IActivityManager {
* @param state The customized state data
*/
void setProcessStateSummary(in byte[] state);
+
+ /**
+ * Return whether the app freezer is supported (true) or not (false) by this system.
+ */
+ boolean isAppFreezerSupported();
}
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 6c8bd7f352d4..c0d0c21af1ab 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -14033,6 +14033,14 @@ public final class Settings {
"zram_enabled";
/**
+ * Whether the app freezer is enabled on this device.
+ * The value of "enabled" enables the app freezer, "disabled" disables it and
+ * "device_default" will let the system decide whether to enable the freezer or not
+ * @hide
+ */
+ public static final String CACHED_APPS_FREEZER_ENABLED = "cached_apps_freezer";
+
+ /**
* Configuration flags for smart replies in notifications.
* This is encoded as a key=value list, separated by commas. Ex:
*
diff --git a/core/proto/android/providers/settings/global.proto b/core/proto/android/providers/settings/global.proto
index d5384a1c2fdd..762895b6320f 100644
--- a/core/proto/android/providers/settings/global.proto
+++ b/core/proto/android/providers/settings/global.proto
@@ -169,6 +169,7 @@ message GlobalSettingsProto {
optional SettingProto boot_count = 22 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto bugreport_in_power_menu = 23 [ (android.privacy).dest = DEST_AUTOMATIC ];
+ optional SettingProto cached_apps_freezer_enabled = 152 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto call_auto_retry = 24 [ (android.privacy).dest = DEST_AUTOMATIC ];
message CaptivePortal {
@@ -1059,5 +1060,5 @@ message GlobalSettingsProto {
// Please insert fields in alphabetical order and group them into messages
// if possible (to avoid reaching the method limit).
- // Next tag = 152;
+ // Next tag = 153;
}
diff --git a/packages/SettingsLib/res/values/arrays.xml b/packages/SettingsLib/res/values/arrays.xml
index 7b58937049d1..d59d698efba2 100644
--- a/packages/SettingsLib/res/values/arrays.xml
+++ b/packages/SettingsLib/res/values/arrays.xml
@@ -633,4 +633,18 @@
<item>@color/bt_color_bg_7</item>
</integer-array>
+ <!-- Cached apps freezer modes -->
+ <array name="cached_apps_freezer_entries">
+ <item>@string/cached_apps_freezer_device_default</item>
+ <item>@string/cached_apps_freezer_enabled</item>
+ <item>@string/cached_apps_freezer_disabled</item>
+ </array>
+
+ <!-- Values for cached apps freezer modes -->
+ <array name="cached_apps_freezer_values">
+ <item>device_default</item>
+ <item>enabled</item>
+ <item>disabled</item>
+ </array>
+
</resources>
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index 7ca0e809143a..934f61091bcc 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -1365,4 +1365,12 @@
<!-- Name for the guest user [CHAR LIMIT=35] -->
<string name="guest_nickname">Guest</string>
+ <!-- List entry in developer settings to choose default device/system behavior for the app freezer [CHAR LIMIT=30]-->
+ <string name="cached_apps_freezer_device_default">Device default</string>
+ <!-- List entry in developer settings to disable the app freezer in developer settings [CHAR LIMIT=30]-->
+ <string name="cached_apps_freezer_disabled">Disabled</string>
+ <!-- List entry in developer settings to enable the app freezer in developer settings [CHAR LIMIT=30]-->
+ <string name="cached_apps_freezer_enabled">Enabled</string>
+ <!-- Developer setting dialog prompting the user to reboot after changing the app freezer setting [CHAR LIMIT=NONE]-->
+ <string name="cached_apps_freezer_reboot_dialog_text">Your device must be rebooted for this change to apply. Reboot now or cancel.</string>
</resources>
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index a5dce6da348f..3d7559b2c1a6 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -376,6 +376,9 @@ class SettingsProtoDumpUtil {
Settings.Global.BUGREPORT_IN_POWER_MENU,
GlobalSettingsProto.BUGREPORT_IN_POWER_MENU);
dumpSetting(s, p,
+ Settings.Global.CACHED_APPS_FREEZER_ENABLED,
+ GlobalSettingsProto.CACHED_APPS_FREEZER_ENABLED);
+ dumpSetting(s, p,
Settings.Global.CALL_AUTO_RETRY,
GlobalSettingsProto.CALL_AUTO_RETRY);
diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
index be0a8640760f..4a9eba2202e3 100644
--- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
+++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
@@ -587,7 +587,8 @@ public class SettingsBackupTest {
Settings.Global.POWER_BUTTON_VERY_LONG_PRESS,
Settings.Global.SHOW_MEDIA_ON_QUICK_SETTINGS, // Temporary for R beta
Settings.Global.INTEGRITY_CHECK_INCLUDES_RULE_PROVIDER,
- Settings.Global.ADVANCED_BATTERY_USAGE_AMOUNT);
+ Settings.Global.ADVANCED_BATTERY_USAGE_AMOUNT,
+ Settings.Global.CACHED_APPS_FREEZER_ENABLED);
private static final Set<String> BACKUP_BLACKLISTED_SECURE_SETTINGS =
newHashSet(
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 8d3515202126..11e6f20689ca 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -20201,4 +20201,15 @@ public class ActivityManagerService extends IActivityManager.Stub
mUsageStatsService.reportLocusUpdate(activity, userId, locusId, appToken);
}
}
+
+ @Override
+ public boolean isAppFreezerSupported() {
+ final long token = Binder.clearCallingIdentity();
+
+ try {
+ return mOomAdjuster.mCachedAppOptimizer.isFreezerSupported();
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
}
diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java
index 86d9028f53dc..f9d204fa008e 100644
--- a/services/core/java/com/android/server/am/CachedAppOptimizer.java
+++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java
@@ -33,6 +33,7 @@ import android.os.Trace;
import android.provider.DeviceConfig;
import android.provider.DeviceConfig.OnPropertiesChangedListener;
import android.provider.DeviceConfig.Properties;
+import android.provider.Settings;
import android.text.TextUtils;
import android.util.EventLog;
import android.util.Slog;
@@ -407,7 +408,7 @@ public final class CachedAppOptimizer {
/**
* Determines whether the freezer is correctly supported by this system
*/
- public boolean isFreezerSupported() {
+ public static boolean isFreezerSupported() {
boolean supported = false;
FileReader fr = null;
@@ -443,7 +444,13 @@ public final class CachedAppOptimizer {
*/
@GuardedBy("mPhenotypeFlagLock")
private void updateUseFreezer() {
- if (DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER_NATIVE_BOOT,
+ final String configOverride = Settings.Global.getString(mAm.mContext.getContentResolver(),
+ Settings.Global.CACHED_APPS_FREEZER_ENABLED);
+
+ if ("disabled".equals(configOverride)) {
+ mUseFreezer = false;
+ } else if ("enabled".equals(configOverride)
+ || DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER_NATIVE_BOOT,
KEY_USE_FREEZER, DEFAULT_USE_FREEZER)) {
mUseFreezer = isFreezerSupported();
}