diff options
author | Matt Pietal <mpietal@google.com> | 2020-12-23 14:05:53 -0500 |
---|---|---|
committer | Matt Pietal <mpietal@google.com> | 2020-12-28 11:45:03 -0500 |
commit | d2d9edbbaa75fb901b8c6db2d5f42a521b5af6a3 (patch) | |
tree | 0ff48c19d9c0b145cce0f5893bd2debca688c431 /packages/SystemUI/src/com | |
parent | a6075e692e521a7d2bd83bad302189c39d78c419 (diff) |
Keyguard: BG mediarouter initialization
MediaRouter init can cause ANRs in sysui on startup. Background the
initialization, and check for null no show/hide.
Fixes: 176061994
Test: atest SystemUiTests
Change-Id: I66b9e3736b7c28fd6c04195ced4523ec501202eb
Diffstat (limited to 'packages/SystemUI/src/com')
-rw-r--r-- | packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java index 901a7360f311..77e568c66a9d 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java @@ -37,16 +37,19 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.keyguard.dagger.KeyguardStatusViewComponent; import com.android.systemui.Dependency; import com.android.systemui.R; +import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.navigationbar.NavigationBarController; import com.android.systemui.navigationbar.NavigationBarView; +import java.util.concurrent.Executor; + import javax.inject.Inject; public class KeyguardDisplayManager { protected static final String TAG = "KeyguardDisplayManager"; private static boolean DEBUG = KeyguardConstants.DEBUG; - private final MediaRouter mMediaRouter; + private MediaRouter mMediaRouter = null; private final DisplayManager mDisplayService; private final KeyguardStatusViewComponent.Factory mKeyguardStatusViewComponentFactory; private final Context mContext; @@ -90,10 +93,11 @@ public class KeyguardDisplayManager { @Inject public KeyguardDisplayManager(Context context, - KeyguardStatusViewComponent.Factory keyguardStatusViewComponentFactory) { + KeyguardStatusViewComponent.Factory keyguardStatusViewComponentFactory, + @UiBackground Executor uiBgExecutor) { mContext = context; mKeyguardStatusViewComponentFactory = keyguardStatusViewComponentFactory; - mMediaRouter = mContext.getSystemService(MediaRouter.class); + uiBgExecutor.execute(() -> mMediaRouter = mContext.getSystemService(MediaRouter.class)); mDisplayService = mContext.getSystemService(DisplayManager.class); mDisplayService.registerDisplayListener(mDisplayListener, null /* handler */); } @@ -162,8 +166,12 @@ public class KeyguardDisplayManager { public void show() { if (!mShowing) { if (DEBUG) Log.v(TAG, "show"); - mMediaRouter.addCallback(MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY, - mMediaRouterCallback, MediaRouter.CALLBACK_FLAG_PASSIVE_DISCOVERY); + if (mMediaRouter != null) { + mMediaRouter.addCallback(MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY, + mMediaRouterCallback, MediaRouter.CALLBACK_FLAG_PASSIVE_DISCOVERY); + } else { + Log.w(TAG, "MediaRouter not yet initialized"); + } updateDisplays(true /* showing */); } mShowing = true; @@ -172,7 +180,9 @@ public class KeyguardDisplayManager { public void hide() { if (mShowing) { if (DEBUG) Log.v(TAG, "hide"); - mMediaRouter.removeCallback(mMediaRouterCallback); + if (mMediaRouter != null) { + mMediaRouter.removeCallback(mMediaRouterCallback); + } updateDisplays(false /* showing */); } mShowing = false; |