diff options
author | Wei Sheng Shih <wilsonshih@google.com> | 2022-01-10 16:31:02 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-01-10 16:31:02 +0000 |
commit | 0c6450141f246d4a53efc04ec3c9b430ce2f4fc6 (patch) | |
tree | cbba6d41626216800be51cc045c079d9db9d6e83 | |
parent | eda40724ea9727103c5ee4f92e54d88514b30229 (diff) | |
parent | 4ee97aa498372b586e100d33a33d16cea7a58058 (diff) |
Merge "Fix transfer splash screen view been called twice from onDraw" into sc-v2-dev
-rw-r--r-- | core/java/android/app/ActivityThread.java | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 57ad989d01c8..131bfd337b18 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -4178,15 +4178,20 @@ public final class ActivityThread extends ClientTransactionHandler view.requestLayout(); view.getViewTreeObserver().addOnDrawListener(new ViewTreeObserver.OnDrawListener() { + private boolean mHandled = false; @Override public void onDraw() { + if (mHandled) { + return; + } + mHandled = true; // Transfer the splash screen view from shell to client. // Call syncTransferSplashscreenViewTransaction at the first onDraw so we can ensure // the client view is ready to show and we can use applyTransactionOnDraw to make // all transitions happen at the same frame. syncTransferSplashscreenViewTransaction( view, r.token, decorView, startingWindowLeash); - view.postOnAnimation(() -> view.getViewTreeObserver().removeOnDrawListener(this)); + view.post(() -> view.getViewTreeObserver().removeOnDrawListener(this)); } }); } |