diff --git a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java index 2534699624..91e5d141cb 100644 --- a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java @@ -122,6 +122,15 @@ public abstract class BaseQuickstepLauncher extends Launcher private final ServiceConnection mTisBinderConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName componentName, IBinder iBinder) { + if (!(iBinder instanceof TISBinder)) { + // Seems like there can be a race condition when user unlocks, which kills the TIS + // process and re-starts it. I guess in the meantime service can be connected to + // a killed TIS? Either way, unbind and try to re-connect in that case. + unbindService(mTisBinderConnection); + mHandler.postDelayed(mConnectionRunnable, BACKOFF_MILLIS); + return; + } + mTaskbarManager = ((TISBinder) iBinder).getTaskbarManager(); mTaskbarManager.setLauncher(BaseQuickstepLauncher.this);