Complete booting when frontmost activity is idle

The boot process is intended to complete when the frontmost activity
becomes idle. This change fixes a corner case where the system was
booting and the Home activity became idle when it was not at the
front causing the system to never complete booting.

Before ag/603303 a secondary stack was created for the TaskPersister
at the beginning of activity manager systemReady(). Following that
change the secondary stack was created for the first time when a task
was restored from system ui recents when getTaskThumbnail() was
called. At the time it was created it was also moved to the front of
the stack order.

If that stack creation happens to occur after the Home activity is
started but before the Home activity becomes idle then the new stack
will obscure the Home activity and the boot process does not
complete.

1. This change adds a test for an idle activity coming to the front
when a stack is moving to the front and we haven't completed booting
yet. If this situation is detected the boot sequence is then
completed.

2. This change fixes the stack ordering so that creating a new task
when restoring recents does not automatically move the stack to the
front.

Fixes bug 18949470.

Change-Id: I243f0bb4396b518a0a8835c0c7bdccb2581a3520
1 file changed