From 9bcc60704991879a0f8c9098eef26233942d6fe2 Mon Sep 17 00:00:00 2001 From: Shuhrat Dehkanov Date: Sat, 19 May 2012 23:13:33 +0900 Subject: [PATCH] Unregister ContentObserver in InputMethodAndLanguageSettings class A content observer (SettingsObserver) is registered when InputMethodAndLanguageSettings is created, but it is never unregistered. Added resume() and pause() methods to SettingsObserver inner class to register/unregister the content observer when InputMethodAndLanguageSettings is resumed/paused. Change-Id: I6d4cc2625a5fd8435967d930f46e8fe86eda4714 Signed-off-by: Shuhrat Dehkanov --- .../InputMethodAndLanguageSettings.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java index 44543898b5b..aa2bcf48bb2 100644 --- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java +++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java @@ -172,6 +172,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment @Override public void onResume() { super.onResume(); + mSettingsObserver.resume(); if (!mIsOnlyImeSettings) { if (mLanguagePref != null) { Configuration conf = getResources().getConfiguration(); @@ -207,6 +208,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment @Override public void onPause() { super.onPause(); + mSettingsObserver.pause(); if (SHOW_INPUT_METHOD_SWITCHER_SETTINGS) { mShowInputMethodSelectorPref.setOnPreferenceChangeListener(null); } @@ -359,17 +361,27 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment } private class SettingsObserver extends ContentObserver { + private Context mContext; + public SettingsObserver(Handler handler, Context context) { super(handler); - final ContentResolver cr = context.getContentResolver(); + mContext = context; + } + + @Override public void onChange(boolean selfChange) { + updateCurrentImeName(); + } + + public void resume() { + final ContentResolver cr = mContext.getContentResolver(); cr.registerContentObserver( Settings.Secure.getUriFor(Settings.Secure.DEFAULT_INPUT_METHOD), false, this); cr.registerContentObserver(Settings.Secure.getUriFor( Settings.Secure.SELECTED_INPUT_METHOD_SUBTYPE), false, this); } - @Override public void onChange(boolean selfChange) { - updateCurrentImeName(); + public void pause() { + mContext.getContentResolver().unregisterContentObserver(this); } } }