diff --git a/core/java/android/view/InputWindowHandle.java b/core/java/android/view/InputWindowHandle.java index cca179974100b..139bff4b0118d 100644 --- a/core/java/android/view/InputWindowHandle.java +++ b/core/java/android/view/InputWindowHandle.java @@ -49,6 +49,11 @@ public final class InputWindowHandle { */ @Nullable private IBinder windowToken; + /** + * Used to cache IWindow from the windowToken so we don't need to convert every time getWindow + * is called. + */ + private IWindow window; // The window name. public String name; @@ -151,7 +156,7 @@ public final class InputWindowHandle { .append(", visible=").append(visible) .append(", scaleFactor=").append(scaleFactor) .append(", transform=").append(transform) - .append(", windowToken=").append(getWindow()) + .append(", windowToken=").append(windowToken) .toString(); } @@ -186,9 +191,14 @@ public final class InputWindowHandle { public void setWindowToken(IWindow iwindow) { windowToken = iwindow.asBinder(); + window = iwindow; } public IWindow getWindow() { - return IWindow.Stub.asInterface(windowToken); + if (window != null) { + return window; + } + window = IWindow.Stub.asInterface(windowToken); + return window; } }