Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit df6bfa19 authored by Mattias Petersson's avatar Mattias Petersson Committed by Steve Kondik
Browse files

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
parent b356d5a8
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -6003,6 +6003,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) {
@@ -7260,9 +7265,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;
        }
    }