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
This commit is contained in:
Marco Ballesio
2020-05-06 16:35:44 +00:00
committed by Android (Google) Code Review
9 changed files with 62 additions and 4 deletions

View File

@@ -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();
}

View File

@@ -14032,6 +14032,14 @@ public final class Settings {
public static final String ZRAM_ENABLED =
"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:

View File

@@ -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;
}

View File

@@ -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>

View File

@@ -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>

View File

@@ -375,6 +375,9 @@ class SettingsProtoDumpUtil {
dumpSetting(s, p,
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);

View File

@@ -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(

View File

@@ -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);
}
}
}

View File

@@ -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();
}