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 <uzbmaster@gmail.com>
This commit is contained in:
Shuhrat Dehkanov
2012-05-19 23:13:33 +09:00
parent 69801b36a1
commit 9bcc607049

View File

@@ -172,6 +172,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
mSettingsObserver.resume();
if (!mIsOnlyImeSettings) { if (!mIsOnlyImeSettings) {
if (mLanguagePref != null) { if (mLanguagePref != null) {
Configuration conf = getResources().getConfiguration(); Configuration conf = getResources().getConfiguration();
@@ -207,6 +208,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
@Override @Override
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
mSettingsObserver.pause();
if (SHOW_INPUT_METHOD_SWITCHER_SETTINGS) { if (SHOW_INPUT_METHOD_SWITCHER_SETTINGS) {
mShowInputMethodSelectorPref.setOnPreferenceChangeListener(null); mShowInputMethodSelectorPref.setOnPreferenceChangeListener(null);
} }
@@ -359,17 +361,27 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
} }
private class SettingsObserver extends ContentObserver { private class SettingsObserver extends ContentObserver {
private Context mContext;
public SettingsObserver(Handler handler, Context context) { public SettingsObserver(Handler handler, Context context) {
super(handler); 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( cr.registerContentObserver(
Settings.Secure.getUriFor(Settings.Secure.DEFAULT_INPUT_METHOD), false, this); Settings.Secure.getUriFor(Settings.Secure.DEFAULT_INPUT_METHOD), false, this);
cr.registerContentObserver(Settings.Secure.getUriFor( cr.registerContentObserver(Settings.Secure.getUriFor(
Settings.Secure.SELECTED_INPUT_METHOD_SUBTYPE), false, this); Settings.Secure.SELECTED_INPUT_METHOD_SUBTYPE), false, this);
} }
@Override public void onChange(boolean selfChange) { public void pause() {
updateCurrentImeName(); mContext.getContentResolver().unregisterContentObserver(this);
} }
} }
} }