diff options
| author | 2022-01-10 17:02:47 +0000 | |
|---|---|---|
| committer | 2022-01-10 17:02:47 +0000 | |
| commit | 494706d9c2d1f2d0d051c87107db1cb20cfe01ef (patch) | |
| tree | 9e8507ae3c7c2e5732e2ef422cd0b7f4d63589b7 | |
| parent | 4525320052ed87f985038e8cc661691c995986fa (diff) | |
| parent | 0c6450141f246d4a53efc04ec3c9b430ce2f4fc6 (diff) | |
Merge "Fix transfer splash screen view been called twice from onDraw" into sc-v2-dev am: 0c6450141f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16561482
Change-Id: If8a3b2bddc7583da65673258ae2fe1c64ab840a2
| -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 8d99f0dfd919..5ec5522460a2 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -4177,15 +4177,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)); } }); } |