diff options
Diffstat (limited to 'packages/SystemUI')
-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; |