From f17db9f5257011d5331d27a6da7d4e6fddde1e08 Mon Sep 17 00:00:00 2001 From: satok Date: Wed, 14 Sep 2011 18:55:58 +0900 Subject: Call onFinishInputView in onDestroy onFinishInputView is called in InputMethodService#hideWindow but not in onDestroy. For closing IMS safely, onFinishInputView should be called in onDestroy. Bug: 5265534 Bug: 4697071 Change-Id: I2947b62326e3e0644f1c079eafc839a9981e902b --- core/java/android/inputmethodservice/InputMethodService.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'core/java/android/inputmethodservice/InputMethodService.java') diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index d2efffffe97f..60188eab2250 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -687,6 +687,7 @@ public class InputMethodService extends AbstractInputMethodService { super.onDestroy(); mRootView.getViewTreeObserver().removeOnComputeInternalInsetsListener( mInsetsComputer); + finishViews(); if (mWindowAdded) { // Disable exit animation for the current IME window // to avoid the race condition between the exit and enter animations @@ -695,7 +696,7 @@ public class InputMethodService extends AbstractInputMethodService { mWindow.dismiss(); } } - + /** * Take care of handling configuration changes. Subclasses of * InputMethodService generally don't need to deal directly with @@ -1436,7 +1437,7 @@ public class InputMethodService extends AbstractInputMethodService { } } - public void hideWindow() { + private void finishViews() { if (mInputViewStarted) { if (DEBUG) Log.v(TAG, "CALL: onFinishInputView"); onFinishInputView(false); @@ -1446,6 +1447,10 @@ public class InputMethodService extends AbstractInputMethodService { } mInputViewStarted = false; mCandidatesViewStarted = false; + } + + public void hideWindow() { + finishViews(); mImm.setImeWindowStatus(mToken, 0, mBackDisposition); if (mWindowVisible) { mWindow.hide(); -- cgit v1.2.3