diff options
author | Mattias Petersson <mattias.petersson@sonyericsson.com> | 2010-12-21 10:15:11 +0100 |
---|---|---|
committer | Johan Redestig <johan.redestig@sonyericsson.com> | 2010-12-21 10:15:11 +0100 |
commit | 33b432476edbc8b8d39f5f70e594b6bc71317286 (patch) | |
tree | 6436bbb63ce6fa1704baf83807c593834d55247a /services | |
parent | e78a000955c283509ee8a21b8b7e448060ac8dd8 (diff) | |
download | frameworks_base-33b432476edbc8b8d39f5f70e594b6bc71317286.zip frameworks_base-33b432476edbc8b8d39f5f70e594b6bc71317286.tar.gz frameworks_base-33b432476edbc8b8d39f5f70e594b6bc71317286.tar.bz2 |
Improve performance of WindowState.toString()
This fix improves the performance by caching the string that should
be returned, and reuse it next time if possible.
This will make it faster to switch between activities, approximately
half the time to create the new view when changing from landscape to
portrait. Also, the time for starting a new application is be reduced
as WindowState.toString is being called thousands of times in this
case.
Change-Id: I2b8b9bc1e251d1af43b6c85f049c01452f2573a2
Diffstat (limited to 'services')
-rw-r--r-- | services/java/com/android/server/WindowManagerService.java | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java index 83d65fa..f605c11 100644 --- a/services/java/com/android/server/WindowManagerService.java +++ b/services/java/com/android/server/WindowManagerService.java @@ -6005,6 +6005,11 @@ public class WindowManagerService extends IWindowManager.Stub // Input channel InputChannel mInputChannel; + // Used to improve performance of toString() + String mStringNameCache; + CharSequence mLastTitle; + boolean mWasPaused; + WindowState(Session s, IWindow c, WindowToken token, WindowState attachedWindow, WindowManager.LayoutParams a, int viewVisibility) { @@ -7262,9 +7267,14 @@ public class WindowManagerService extends IWindowManager.Stub @Override public String toString() { - return "Window{" - + Integer.toHexString(System.identityHashCode(this)) - + " " + mAttrs.getTitle() + " paused=" + mToken.paused + "}"; + if (mStringNameCache == null || mLastTitle != mAttrs.getTitle() + || mWasPaused != mToken.paused) { + mLastTitle = mAttrs.getTitle(); + mWasPaused = mToken.paused; + mStringNameCache = "Window{" + Integer.toHexString(System.identityHashCode(this)) + + " " + mLastTitle + " paused=" + mWasPaused + "}"; + } + return mStringNameCache; } } |