系统语言改变时,输入法变成默认输入法分析
 当系统的语言改变时,选择的输入法会变成默认输入法:
 实现的过程在: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);
         }
     }
 
 
 
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号