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:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user