Loading java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +40 −41 Original line number Diff line number Diff line Loading @@ -56,7 +56,6 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha private SubtypeSwitcher mSubtypeSwitcher; private SharedPreferences mPrefs; private View mInputView; private LatinKeyboardView mKeyboardView; private LatinIME mInputMethodService; Loading Loading @@ -101,7 +100,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha // Default is SETTINGS_KEY_MODE_AUTO. private static final int DEFAULT_SETTINGS_KEY_MODE = SETTINGS_KEY_MODE_AUTO; private int mLayoutId; private int mThemeIndex; private int mKeyboardWidth; private static final KeyboardSwitcher sInstance = new KeyboardSwitcher(); Loading @@ -122,11 +121,11 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha try { sConfigDefaultKeyboardThemeId = ims.getString( R.string.config_default_keyboard_theme_id); sInstance.mLayoutId = Integer.valueOf( sInstance.mThemeIndex = Integer.valueOf( prefs.getString(PREF_KEYBOARD_LAYOUT, sConfigDefaultKeyboardThemeId)); } catch (NumberFormatException e) { sConfigDefaultKeyboardThemeId = "0"; sInstance.mLayoutId = 0; sInstance.mThemeIndex = 0; } prefs.registerOnSharedPreferenceChangeListener(sInstance); } Loading Loading @@ -711,49 +710,51 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } public View onCreateInputView() { createInputViewInternal(mLayoutId, true); return mInputView; return createInputView(mThemeIndex, true); } private void createInputViewInternal(int newLayout, boolean forceReset) { int layoutId = newLayout; if (mLayoutId != layoutId || mKeyboardView == null || forceReset) { // Instance variable only for {@link #createInputView(int, boolean)}. private View mCurrentInputView; private View createInputView(final int newThemeIndex, final boolean forceRecreate) { if (mCurrentInputView != null && mThemeIndex == newThemeIndex && !forceRecreate) return mCurrentInputView; if (mKeyboardView != null) { mKeyboardView.closing(); } if (KEYBOARD_THEMES.length <= layoutId) { layoutId = Integer.valueOf(sConfigDefaultKeyboardThemeId); } final int themeIndex = (newThemeIndex < KEYBOARD_THEMES.length) ? newThemeIndex : Integer.valueOf(sConfigDefaultKeyboardThemeId); Utils.GCUtils.getInstance().reset(); boolean tryGC = true; for (int i = 0; i < Utils.GCUtils.GC_TRY_LOOP_MAX && tryGC; ++i) { try { mInputView = LayoutInflater.from(mInputMethodService).inflate( KEYBOARD_THEMES[layoutId], null); mCurrentInputView = LayoutInflater.from(mInputMethodService).inflate( KEYBOARD_THEMES[themeIndex], null); tryGC = false; } catch (OutOfMemoryError e) { Log.w(TAG, "load keyboard failed: " + e); tryGC = Utils.GCUtils.getInstance().tryGCOrWait( mLayoutId + "," + layoutId, e); tryGC = Utils.GCUtils.getInstance().tryGCOrWait(mThemeIndex + "," + themeIndex, e); } catch (InflateException e) { Log.w(TAG, "load keyboard failed: " + e); tryGC = Utils.GCUtils.getInstance().tryGCOrWait( mLayoutId + "," + layoutId, e); tryGC = Utils.GCUtils.getInstance().tryGCOrWait(mThemeIndex + "," + themeIndex, e); } } mKeyboardView = (LatinKeyboardView)mInputView.findViewById(R.id.latin_keyboard_view); mKeyboardView = (LatinKeyboardView) mCurrentInputView.findViewById( R.id.latin_keyboard_view); mKeyboardView.setOnKeyboardActionListener(mInputMethodService); mLayoutId = layoutId; } mThemeIndex = themeIndex; return mCurrentInputView; } private void postSetInputView() { private void postSetInputView(final View newInputView) { mInputMethodService.mHandler.post(new Runnable() { @Override public void run() { if (mKeyboardView != null) { mInputMethodService.setInputView(mKeyboardView); if (newInputView != null) { mInputMethodService.setInputView(newInputView); } mInputMethodService.updateInputViewShown(); } Loading @@ -765,13 +766,11 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha if (PREF_KEYBOARD_LAYOUT.equals(key)) { final int layoutId = Integer.valueOf( sharedPreferences.getString(key, sConfigDefaultKeyboardThemeId)); createInputViewInternal(layoutId, false); postSetInputView(); postSetInputView(createInputView(layoutId, false)); } else if (Settings.PREF_SETTINGS_KEY.equals(key)) { mSettingsKeyEnabledInSettings = getSettingsKeyMode(sharedPreferences, mInputMethodService); createInputViewInternal(mLayoutId, true); postSetInputView(); postSetInputView(createInputView(mThemeIndex, true)); } } Loading Loading
java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +40 −41 Original line number Diff line number Diff line Loading @@ -56,7 +56,6 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha private SubtypeSwitcher mSubtypeSwitcher; private SharedPreferences mPrefs; private View mInputView; private LatinKeyboardView mKeyboardView; private LatinIME mInputMethodService; Loading Loading @@ -101,7 +100,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha // Default is SETTINGS_KEY_MODE_AUTO. private static final int DEFAULT_SETTINGS_KEY_MODE = SETTINGS_KEY_MODE_AUTO; private int mLayoutId; private int mThemeIndex; private int mKeyboardWidth; private static final KeyboardSwitcher sInstance = new KeyboardSwitcher(); Loading @@ -122,11 +121,11 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha try { sConfigDefaultKeyboardThemeId = ims.getString( R.string.config_default_keyboard_theme_id); sInstance.mLayoutId = Integer.valueOf( sInstance.mThemeIndex = Integer.valueOf( prefs.getString(PREF_KEYBOARD_LAYOUT, sConfigDefaultKeyboardThemeId)); } catch (NumberFormatException e) { sConfigDefaultKeyboardThemeId = "0"; sInstance.mLayoutId = 0; sInstance.mThemeIndex = 0; } prefs.registerOnSharedPreferenceChangeListener(sInstance); } Loading Loading @@ -711,49 +710,51 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } public View onCreateInputView() { createInputViewInternal(mLayoutId, true); return mInputView; return createInputView(mThemeIndex, true); } private void createInputViewInternal(int newLayout, boolean forceReset) { int layoutId = newLayout; if (mLayoutId != layoutId || mKeyboardView == null || forceReset) { // Instance variable only for {@link #createInputView(int, boolean)}. private View mCurrentInputView; private View createInputView(final int newThemeIndex, final boolean forceRecreate) { if (mCurrentInputView != null && mThemeIndex == newThemeIndex && !forceRecreate) return mCurrentInputView; if (mKeyboardView != null) { mKeyboardView.closing(); } if (KEYBOARD_THEMES.length <= layoutId) { layoutId = Integer.valueOf(sConfigDefaultKeyboardThemeId); } final int themeIndex = (newThemeIndex < KEYBOARD_THEMES.length) ? newThemeIndex : Integer.valueOf(sConfigDefaultKeyboardThemeId); Utils.GCUtils.getInstance().reset(); boolean tryGC = true; for (int i = 0; i < Utils.GCUtils.GC_TRY_LOOP_MAX && tryGC; ++i) { try { mInputView = LayoutInflater.from(mInputMethodService).inflate( KEYBOARD_THEMES[layoutId], null); mCurrentInputView = LayoutInflater.from(mInputMethodService).inflate( KEYBOARD_THEMES[themeIndex], null); tryGC = false; } catch (OutOfMemoryError e) { Log.w(TAG, "load keyboard failed: " + e); tryGC = Utils.GCUtils.getInstance().tryGCOrWait( mLayoutId + "," + layoutId, e); tryGC = Utils.GCUtils.getInstance().tryGCOrWait(mThemeIndex + "," + themeIndex, e); } catch (InflateException e) { Log.w(TAG, "load keyboard failed: " + e); tryGC = Utils.GCUtils.getInstance().tryGCOrWait( mLayoutId + "," + layoutId, e); tryGC = Utils.GCUtils.getInstance().tryGCOrWait(mThemeIndex + "," + themeIndex, e); } } mKeyboardView = (LatinKeyboardView)mInputView.findViewById(R.id.latin_keyboard_view); mKeyboardView = (LatinKeyboardView) mCurrentInputView.findViewById( R.id.latin_keyboard_view); mKeyboardView.setOnKeyboardActionListener(mInputMethodService); mLayoutId = layoutId; } mThemeIndex = themeIndex; return mCurrentInputView; } private void postSetInputView() { private void postSetInputView(final View newInputView) { mInputMethodService.mHandler.post(new Runnable() { @Override public void run() { if (mKeyboardView != null) { mInputMethodService.setInputView(mKeyboardView); if (newInputView != null) { mInputMethodService.setInputView(newInputView); } mInputMethodService.updateInputViewShown(); } Loading @@ -765,13 +766,11 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha if (PREF_KEYBOARD_LAYOUT.equals(key)) { final int layoutId = Integer.valueOf( sharedPreferences.getString(key, sConfigDefaultKeyboardThemeId)); createInputViewInternal(layoutId, false); postSetInputView(); postSetInputView(createInputView(layoutId, false)); } else if (Settings.PREF_SETTINGS_KEY.equals(key)) { mSettingsKeyEnabledInSettings = getSettingsKeyMode(sharedPreferences, mInputMethodService); createInputViewInternal(mLayoutId, true); postSetInputView(); postSetInputView(createInputView(mThemeIndex, true)); } } Loading