Fix unusual NPE after onDestroy

Bug: 11673978
Change-Id: I4d5268312911685ff1ca9483a62442a1a9686c62
This commit is contained in:
Tadashi G. Takaoka 2013-11-15 17:34:45 +09:00
parent 2bf3a77814
commit ffb064656e

View file

@ -722,8 +722,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
LatinImeLogger.commit(); LatinImeLogger.commit();
LatinImeLogger.onDestroy(); LatinImeLogger.onDestroy();
if (mInputUpdater != null) { if (mInputUpdater != null) {
mInputUpdater.onDestroy(); mInputUpdater.quitLooper();
mInputUpdater = null;
} }
super.onDestroy(); super.onDestroy();
} }
@ -1806,13 +1805,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
mWordComposer.setCapitalizedModeAtStartComposingTime(getActualCapsMode()); mWordComposer.setCapitalizedModeAtStartComposingTime(getActualCapsMode());
} }
private static final class InputUpdater implements Handler.Callback { static final class InputUpdater implements Handler.Callback {
private final Handler mHandler; private final Handler mHandler;
private final LatinIME mLatinIme; private final LatinIME mLatinIme;
private final Object mLock = new Object(); private final Object mLock = new Object();
private boolean mInBatchInput; // synchronized using {@link #mLock}. private boolean mInBatchInput; // synchronized using {@link #mLock}.
private InputUpdater(final LatinIME latinIme) { InputUpdater(final LatinIME latinIme) {
final HandlerThread handlerThread = new HandlerThread( final HandlerThread handlerThread = new HandlerThread(
InputUpdater.class.getSimpleName()); InputUpdater.class.getSimpleName());
handlerThread.start(); handlerThread.start();
@ -1929,7 +1928,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
.sendToTarget(); .sendToTarget();
} }
private void onDestroy() { void quitLooper() {
mHandler.removeMessages(MSG_GET_SUGGESTED_WORDS); mHandler.removeMessages(MSG_GET_SUGGESTED_WORDS);
mHandler.removeMessages(MSG_UPDATE_GESTURE_PREVIEW_AND_SUGGESTION_STRIP); mHandler.removeMessages(MSG_UPDATE_GESTURE_PREVIEW_AND_SUGGESTION_STRIP);
mHandler.getLooper().quit(); mHandler.getLooper().quit();