Fix potential crash when exit splash screen

- Make sure mDecorView is attached before calling its
  WindowInsetsController.
- Amend modifier declare sequence for a better code style.

Bug: 258270145
Bug: 256766422
Test: atest SplashscreenTests StartingSurfaceDrawerTests
Change-Id: I4d3b184252ed9516827812adfa0c76e07a6527e7
Merged-In: I4d3b184252ed9516827812adfa0c76e07a6527e7
This commit is contained in:
Shen Lin
2022-11-09 17:16:12 +08:00
committed by Jane Ha
parent 4c71a7841c
commit 18646d5860

View File

@@ -430,7 +430,8 @@ public class StartingSurfaceDrawer {
}
@Override
public @Nullable SplashScreenView get() {
@Nullable
public SplashScreenView get() {
synchronized (this) {
while (!mIsViewSet) {
try {
@@ -691,7 +692,7 @@ public class StartingSurfaceDrawer {
private final TaskSnapshotWindow mTaskSnapshotWindow;
private SplashScreenView mContentView;
private boolean mSetSplashScreen;
private @StartingWindowType int mSuggestType;
@StartingWindowType private int mSuggestType;
private int mBGColor;
private final long mCreateTime;
private int mSystemBarAppearance;
@@ -732,7 +733,7 @@ public class StartingSurfaceDrawer {
// Reset the system bar color which set by splash screen, make it align to the app.
private void clearSystemBarColor() {
if (mDecorView == null) {
if (mDecorView == null || !mDecorView.isAttachedToWindow()) {
return;
}
if (mDecorView.getLayoutParams() instanceof WindowManager.LayoutParams) {