From 33b432476edbc8b8d39f5f70e594b6bc71317286 Mon Sep 17 00:00:00 2001 From: Mattias Petersson Date: Tue, 21 Dec 2010 10:15:11 +0100 Subject: [PATCH] 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 --- .../com/android/server/WindowManagerService.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java index 83d65fa3046f2..f605c117cb27d 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; } }