From 2bd9a25007fcec5612944af7db0d1aa4d9849351 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Tue, 21 Aug 2018 17:41:13 +0200 Subject: DO NOT MERGE Kill most processes when display size changes This isn't something apps generally can handle, so we kill all of them for now. Test: Change cutout overlay that changes display size Test: Rotate screen Bug: 112876936 Change-Id: Ic3b0f1b3ae1e9bd93ac8f2c6952aa093878602b8 --- core/java/android/app/ActivityManagerInternal.java | 5 +++++ .../com/android/server/am/ActivityManagerService.java | 15 +++++++++++++++ .../core/java/com/android/server/wm/DisplayContent.java | 9 +++++++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java index 9b6764d96fb2..14cae95508e7 100644 --- a/core/java/android/app/ActivityManagerInternal.java +++ b/core/java/android/app/ActivityManagerInternal.java @@ -413,4 +413,9 @@ public abstract class ActivityManagerInternal { * @return The intent used to launch the home activity. */ public abstract Intent getHomeIntent(); + + /** + * WindowManager notifies AM when display size of the default display changes. + */ + public abstract void notifyDefaultDisplaySizeChanged(); } diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 2861600db52f..ee4bedf37abb 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -26870,6 +26870,21 @@ public class ActivityManagerService extends IActivityManager.Stub return ActivityManagerService.this.getHomeIntent(); } } + + @Override + public void notifyDefaultDisplaySizeChanged() { + synchronized (this) { + if (mSystemServiceManager.isBootCompleted()) { + Slog.i(TAG, "Killing processes because of display size change"); + killAllBackgroundProcessesExcept(-1, ActivityManager.PROCESS_STATE_SERVICE); + + // TODO: Ugly hack to unblock the release + if (mHomeProcess != null) { + removeProcessLocked(mHomeProcess, false, true, "kill home screen size"); + } + } + } + } } /** diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 2887e5ef9061..2941e93d12dc 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -1775,8 +1775,9 @@ class DisplayContent extends WindowContainer