diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 53a455b6a306f..3d00fda7a9729 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -7407,6 +7407,14 @@ public static void setShowGTalkServiceStatusForUser(ContentResolver cr, boolean */ public static final String POCKET_JUDGE = "pocket_judge"; + /** + * Whether to reclaim memory by killing cached apps shortly after screen on. + * 0 = disabled + * 1 = enabled + * @hide + */ + public static final String SCREEN_ON_MEMORY_RECLAIM = "screen_on_memory_reclaim"; + /** * Whether to show heads up only for dialer and sms apps * @hide diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 3f76a3a7acecc..dff875238d7b2 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -8247,6 +8247,10 @@ private void toggleRingerModes() { } private void releaseMemoryAtScreenOn() { + if (Settings.System.getIntForUser(mContext.getContentResolver(), + Settings.System.SCREEN_ON_MEMORY_RECLAIM, 1, UserHandle.USER_CURRENT) == 0) { + return; + } long currentTime = System.currentTimeMillis(); if (lastMemoryReleaseTime == 0L || currentTime - lastMemoryReleaseTime > MEMORY_RELEASE_INTERVAL_MS) { try {