Defer stop for all activities becoming invisible

If we are deferring a stop until a window is becoming visible,
it's a good idea to also defer stopping all other activities that
are go into stopping state to avoid flickers.

Furthermore we need to fix an issue where activities weren't
cleared from mActivitiesWaitingForVisibleActivity which messed
up the newly introduced logic.

This fixes an issue with quickstep when swiping right and the
previous activity hasn't finished pausing yet when we start the
new activity. In the normal case, prev=Launcher and all is fine,
as we wait with stopping launcher until the animation is done. In
the bad case, prev=the previous activity that was on screen before
swiping, so Launcher doesn't get added to the waiting list, which
means that it will be stopped too early, aborting the animation
because Launcher is also driving it.

Test: ActivityManagerDisplayLockedKeyguardTests
Test: go/wm-smoke
Test: Swipe right from Chrome to any other app, observe no jump
Fixes: 80313326
Bug: 110032866
Change-Id: I39454fe218ac10ef73cc4ca23efc7c9fb3bc87ad
2 files changed