From 90d1adbe9e79e975ef59afc0fe90a9e656c92498 Mon Sep 17 00:00:00 2001 From: Matthew Ng Date: Wed, 30 Aug 2017 11:16:50 -0700 Subject: [PATCH] Fixes recents entrance animation when launching before onStop happens If RecentsActivity was launched before its onStop runs then it would have skipped the entrance animation because its launch flags were reset in onStop. To trigger this, going home and immediately pressing recents will bring it back up. To fix this, skip reset launch flags (because it is set before onStop runs) when recents is requested to launch again. Change-Id: I768f48c33fe77ab2e8f6957611930bf7605bc674 Fixes: 65205705 Test: manual - run recents with apps, press home and immediately recents --- .../android/systemui/recents/RecentsActivity.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java index f8448661d7991..f5455568f7991 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java @@ -65,6 +65,7 @@ import com.android.systemui.recents.events.activity.IterateRecentsEvent; import com.android.systemui.recents.events.activity.LaunchTaskFailedEvent; import com.android.systemui.recents.events.activity.LaunchTaskSucceededEvent; import com.android.systemui.recents.events.activity.MultiWindowStateChangedEvent; +import com.android.systemui.recents.events.activity.RecentsActivityStartingEvent; import com.android.systemui.recents.events.activity.ToggleRecentsEvent; import com.android.systemui.recents.events.component.ActivityUnpinnedEvent; import com.android.systemui.recents.events.component.RecentsVisibilityChangedEvent; @@ -119,6 +120,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD private boolean mFinishedOnStartup; private boolean mIgnoreAltTabRelease; private boolean mIsVisible; + private boolean mRecentsStartRequested; private Configuration mLastConfig; // Top level views @@ -416,6 +418,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD launchState.launchedFromHome = false; onEnterAnimationComplete(); } + mRecentsStartRequested = false; } @Override @@ -449,7 +452,6 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD * Reloads the stack views upon launching Recents. */ private void reloadStackView() { - // If the Recents component has preloaded a load plan, then use that to prevent // reconstructing the task stack RecentsTaskLoader loader = Recents.getTaskLoader(); @@ -572,7 +574,9 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD MetricsLogger.hidden(this, MetricsEvent.OVERVIEW_ACTIVITY); Recents.getTaskLoader().getHighResThumbnailLoader().setVisible(false); - if (!isChangingConfigurations()) { + // When recents starts again before onStop, do not reset launch flags so entrance animation + // can run + if (!isChangingConfigurations() && !mRecentsStartRequested) { // Workaround for b/22542869, if the RecentsActivity is started again, but without going // through SystemUI, we need to reset the config launch flags to ensure that we do not // wait on the system to send a signal that was never queued. @@ -718,6 +722,10 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD MetricsLogger.action(this, MetricsEvent.ACTION_OVERVIEW_PAGE); } + public final void onBusEvent(RecentsActivityStartingEvent event) { + mRecentsStartRequested = true; + } + public final void onBusEvent(UserInteractionEvent event) { // Stop the fast-toggle dozer mIterateTrigger.stopDozing();