Refresh IMMS#mBoundToMethod when IMS is disconnected

It turns out that InputMethodManagerService#mBoundToMethod is not
correctly reset to false when the current InputMethodService is
killed by the system before IMMS explicitly terminates the connection.

As a result, InputMethodService#onBindInput() is not called when the
same IMS is reconnected to the IMMS.  This also means that
IMS#mInputBinding and IMS#mInputConnection remain to be null
unexpectedly.  Crashes of IMEs and APK replacement of IMEs can trigger
such a situation.

With this CL, IMMS#onServiceDisconnected() eventually calls
IMMS#unbindCurrentClientLocked(). It not only resets
IMMS#mBoundToMethod but also updates NavBar icons and closes the IME
switcher dialog, but it is probably an acceptable and reasonable
behavior change because we have done so when switching the IME.

Bug: b.android.com/225029
Bug: 32102706
Test: `adb shell dumpsys input_method | grep "mBoundToMethod"` becomes "false" after the current IME crashes
Change-Id: Id87252a1a50029481d08b70afb12f38830bcd1d9
1 file changed