• 系统语言改变时,输入法变成默认输入法分析


    当系统的语言改变时,选择的输入法会变成默认输入法:
    实现的过程在:InputMethodManagerService.java中的:
    mContext.registerReceiver(// 这里对语言改变广播的监听。
                    new BroadcastReceiver() {
                        @Override
                        public void onReceive(Context context, Intent intent) {
                            synchronized(mMethodMap) {
                                checkCurrentLocaleChangedLocked();//当接收到语言改变发送的广播时执行方法
                            }
                        }
                    }, filter);
            
    在checkCurrentLocaleChangedLocked()方法中:
    有个updateFromSettingsLocked()方法
    updateFromSettingsLocked()这个方法:
       void updateFromSettingsLocked() {
            // We are assuming that whoever is changing DEFAULT_INPUT_METHOD and
            // ENABLED_INPUT_METHODS is taking care of keeping them correctly in
            // sync, so we will never have a DEFAULT_INPUT_METHOD that is not
            // enabled.
            String id = Settings.Secure.getString(mContext.getContentResolver(),
                    Settings.Secure.DEFAULT_INPUT_METHOD);//获取默认输入法
            // There is no input method selected, try to choose new applicable input method.
            if (TextUtils.isEmpty(id) && chooseNewDefaultIMELocked()) {
                id = Settings.Secure.getString(mContext.getContentResolver(),
                        Settings.Secure.DEFAULT_INPUT_METHOD);
            }
            if (!TextUtils.isEmpty(id)) {
                try {
                    setInputMethodLocked(id, getSelectedInputMethodSubtypeId(id));//设置当前输入法为默认输入法。
                } catch (IllegalArgumentException e) {
                    Slog.w(TAG, "Unknown input method from prefs: " + id, e);
                    mCurMethodId = null;
                    unbindCurrentMethodLocked(true);
                }
                mShortcutInputMethodsAndSubtypes.clear();
            } else {
                // There is no longer an input method set, so stop any current one.
                mCurMethodId = null;
                unbindCurrentMethodLocked(true);
            }
        }

  • 相关阅读:
    v-chart使用的相关实例
    v-chart从后台获取数据
    算法题-单词搜索
    关于前端开发的一些小经验总结
    element的input中加入可点击的按钮
    vue.js的入门
    链表问题(算法题)
    同构词分类
    最长不降序子列的改编(dp数组的使用)
    Ubuntu安装Git
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3072109.html
Copyright © 2020-2023  润新知