summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorMattias Petersson <mattias.petersson@sonyericsson.com>2010-12-21 10:15:11 +0100
committerJohan Redestig <johan.redestig@sonyericsson.com>2010-12-21 10:15:11 +0100
commit33b432476edbc8b8d39f5f70e594b6bc71317286 (patch)
tree6436bbb63ce6fa1704baf83807c593834d55247a /services
parente78a000955c283509ee8a21b8b7e448060ac8dd8 (diff)
downloadframeworks_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.java16
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;
}
}