Ensure Surface is recreated if children are detached.

If we detach the children of a Surface, then they are stuck
around indefinitely and we can't use the Surface as the result
of a future call to lay-out visible. This should also improve
Surface lifetime-errors as now in the case of cancelling
an exit animation we will fall in to this preserve surface
codepath instead of the destroySurfaceUnchecked block in
WindowStateAnimator#cancelExitAnimationForNextAnimationLocked.

Bug: 68996752
Bug: 62536731
Bug: 72921025
Bug: 72873272
Change-Id: Ib0be6e7447c04d00bff8784d8b8072918d48e0ba
2 files changed