summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWei Sheng Shih <wilsonshih@google.com>2022-01-10 16:31:02 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-01-10 16:31:02 +0000
commit0c6450141f246d4a53efc04ec3c9b430ce2f4fc6 (patch)
treecbba6d41626216800be51cc045c079d9db9d6e83
parenteda40724ea9727103c5ee4f92e54d88514b30229 (diff)
parent4ee97aa498372b586e100d33a33d16cea7a58058 (diff)
Merge "Fix transfer splash screen view been called twice from onDraw" into sc-v2-dev
-rw-r--r--core/java/android/app/ActivityThread.java7
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));
}
});
}