Call preserveSurfaces when detaching children.

When WM calls detachChildren, it means the app is exiting and we
temporarily want to keep the children around so they aren't removed
during the animation. If the app is quickly relaunched, the children
will remain detached and will not be removed.

Therefore, add a call to preserveSurfaces when detachChildren is called
so it can keep the children around. When the app relaunches, it will tear
down the preserved surface. We also need to ensure the children aren't
reparented to the new surface so we make sure the children weren't
detached previously before reparented them to the new surface.

Test: Quickly close and open app with SV. SV will not leak
Bug: 157439199
Fixes: 155694905
Change-Id: Iea8ed86a9c4a7674804152aa44df7ef3d6341768
1 file changed