OSDN Git Service

Preserve window during resize triggered relaunches.
authorFilip Gruszczynski <gruszczy@google.com>
Fri, 11 Sep 2015 01:28:48 +0000 (18:28 -0700)
committerFilip Gruszczynski <gruszczy@google.com>
Mon, 14 Sep 2015 22:59:32 +0000 (15:59 -0700)
commita59ac9cd645d25f03e4e488100bd99f92e83a3a7
treed50121936732488a7ce93f9a9bc13d54865c627c
parentca9f413b701e38929345a71515a2da2338f4a8dc
Preserve window during resize triggered relaunches.

This changes application code behavior when the activity relaunches due
to configuration change. It only applies to scenarios, where the
configuration change was triggered by a user generated resize of an
activity (i.e. user drags a corner of an activity and thus changes its
size).

Preserving a window means that we will keep the decor view and non
client decor view around, but remove all children views when the
activity gets destroyed. When the activity gets created again, it will
attach its new content to the preserved view hierarchy. Mind, we
actually recreate application side Window object, since some of its
features might changed, but we retain its elevation (to not trigger
relayout with new layout params).

Preserving the window also means that we don't call the window manager
service to remove and later add the window. Instead, we continue using a
single window state throughout the resize operation.

Change-Id: Ie3d2878ed09c99ff343044bfe7a29a0ba07a265e
16 files changed:
cmds/am/src/com/android/commands/am/Am.java
core/java/android/app/Activity.java
core/java/android/app/ActivityManagerNative.java
core/java/android/app/ActivityThread.java
core/java/android/app/ApplicationThreadNative.java
core/java/android/app/IActivityManager.java
core/java/android/app/IApplicationThread.java
core/java/android/app/Instrumentation.java
core/java/android/view/Window.java
core/java/com/android/internal/policy/PhoneWindow.java
services/core/java/com/android/server/am/ActivityManagerService.java
services/core/java/com/android/server/am/ActivityStack.java
services/core/java/com/android/server/am/ActivityStackSupervisor.java
services/core/java/com/android/server/am/CompatModePackages.java
services/core/java/com/android/server/wm/TaskPositioner.java
services/core/java/com/android/server/wm/WallpaperController.java