From c64c3cf488db3eb7d69e194630c77dc4beeb93a0 Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Tue, 14 Sep 2021 11:05:03 -0700 Subject: [PATCH] Rebind TISBinder if service killed during connection Fixes: 198845519 Change-Id: I6af79af5591e2dca941ca4428c550169a178479c --- .../src/com/android/launcher3/BaseQuickstepLauncher.java | 9 +++++++++ 1 file changed, 9 insertions(+) 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);