From 7fcda60a9986d9398ec6da4e353065ddb83b0f3f Mon Sep 17 00:00:00 2001 From: Sergey Serokurov Date: Fri, 18 Mar 2022 09:54:58 -0700 Subject: [PATCH] Set Manage button click listener using postDelayed Bug: 223901921 Test: manual Change-Id: If4db2a7872ead26cfd02a3e8f5f752cb6f111503 --- .../com/android/wm/shell/bubbles/BubbleStackView.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java index 58f79f3600def..b98395baa2779 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java @@ -2795,7 +2795,14 @@ public class BubbleStackView extends FrameLayout mExpandedViewContainer.setVisibility(View.INVISIBLE); mExpandedViewContainer.setAlpha(0f); mExpandedViewContainer.addView(bev); - bev.setManageClickListener((view) -> showManageMenu(!mShowingManage)); + + postDelayed(() -> { + // Set the Manage button click handler from postDelayed. This appears to resolve + // a race condition with adding the BubbleExpandedView view to the expanded view + // container. Due to the race condition the click handler sometimes is not set up + // correctly and is never called. + bev.setManageClickListener((view) -> showManageMenu(true /* show */)); + }, 0); if (!mIsExpansionAnimating) { mSurfaceSynchronizer.syncSurfaceAndRun(() -> {