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流程



