您的位置首页百科知识

Android输入法IMMS服务启动流程(3)(启动IMS应用)

Android输入法IMMS服务启动流程(3)(启动IMS应用)

的有关信息介绍如下:

Android输入法IMMS服务启动流程(3)(启动IMS应用)

接上一篇,IMMS设置当前默认输入法为LatinIME输入法后,调用onCreate方法,然后会调用startInputInnerLocked启动输入法LatinIME的服务

本章节主要分析,onCreate生命周期中,各个流程调用

bindServiceAsUser启动的服务是LatinIME

如上图流程图,服务启动后,会调用到InputMethodManagerService的setAdditionalInputMethodSubtypes方法

该流程的主要逻辑:

完成对mMethodList和mMethodMap的数据初始化;检查当前默认的输入法(LatinIME)服务是否存在,很明显,经过systemrunning过程以后,

mMethodMap已经包含了LatinIME,因此不会重复执行选择和设定另外输入法为默认输入法的操作

该方法主要是检查默认的LatinIME是否是可用的可用的输入法,如果不可用,则设置为可用;

对应的settingprovider字段为:

经过以上流程后,默认输入法依然为LatinIME输入法,该流程的主要作用为,将启动的输入法应用更新到可用列表enabled_input_methods中;

不过,目前默认的输入法依然为LatinIME输入法,跟重启手机前,我们设置的输入法(搜狗输入法)依然不一致

下一篇文章,我们研究下,输入法启动过程中的onBind和onServiceConnected流程