From 3273f31c40ce36010df9c6aa9324102bab9a2464 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Thu, 5 May 2016 17:32:44 -0700 Subject: [PATCH] Also notify divider when getting DockedTopTaskEvent Under some circumstances we never go through the activity lifecycle if we call startActivity before it gets stopped, so we never notified the divider about that we have drawn. Bug: 28531536 Change-Id: I6a13527d52bf40a87f89de4b2799bd0833c6612a --- .../systemui/recents/RecentsActivity.java | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java index 24260d5c8bed9..afb2195d9f996 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java @@ -34,6 +34,7 @@ import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.ViewTreeObserver; +import android.view.ViewTreeObserver.OnPreDrawListener; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; @@ -47,6 +48,7 @@ import com.android.systemui.recents.events.activity.ConfigurationChangedEvent; import com.android.systemui.recents.events.activity.DebugFlagsChangedEvent; import com.android.systemui.recents.events.activity.DismissRecentsToHomeAnimationStarted; import com.android.systemui.recents.events.activity.DockedFirstAnimationFrameEvent; +import com.android.systemui.recents.events.activity.DockedTopTaskEvent; import com.android.systemui.recents.events.activity.EnterRecentsWindowAnimationCompletedEvent; import com.android.systemui.recents.events.activity.EnterRecentsWindowLastAnimationFrameEvent; import com.android.systemui.recents.events.activity.ExitRecentsWindowFirstAnimationFrameEvent; @@ -168,6 +170,16 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD } }; + private final OnPreDrawListener mRecentsDrawnEventListener = + new ViewTreeObserver.OnPreDrawListener() { + @Override + public boolean onPreDraw() { + mRecentsView.getViewTreeObserver().removeOnPreDrawListener(this); + EventBus.getDefault().post(new RecentsDrawnEvent()); + return true; + } + }; + /** * Dismisses recents if we are already visible and the intent is to toggle the recents view. */ @@ -316,16 +328,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD MetricsLogger.visible(this, MetricsEvent.OVERVIEW_ACTIVITY); // Notify of the next draw - mRecentsView.getViewTreeObserver().addOnPreDrawListener( - new ViewTreeObserver.OnPreDrawListener() { - - @Override - public boolean onPreDraw() { - mRecentsView.getViewTreeObserver().removeOnPreDrawListener(this); - EventBus.getDefault().post(new RecentsDrawnEvent()); - return true; - } - }); + mRecentsView.getViewTreeObserver().addOnPreDrawListener(mRecentsDrawnEventListener); } @Override @@ -755,6 +758,11 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD } } + public final void onBusEvent(final DockedTopTaskEvent event) { + mRecentsView.getViewTreeObserver().addOnPreDrawListener(mRecentsDrawnEventListener); + mRecentsView.invalidate(); + } + @Override public boolean onPreDraw() { mRecentsView.getViewTreeObserver().removeOnPreDrawListener(this);