InputMethod剖析

来源:互联网 发布:安卓网络配置文件路径 编辑:程序博客网 时间:2024/06/15 20:39

1,inputMethodSession,view和输入法建立session会话通道,
2,输入法是如何与View进行通信的?
每一个App进程在执行wm.addView()的时候,在其内部会调用ViewrootImpl,并对其进行初始化,ViewrootImpl的构造函数中,会初始化WindowSession,并同时初始化一个IMM单例,IMM类中有一个成员变量mServedInputConnectionWrapper,该变量会被IMMS传递给IMS,当用户输入文字时,输入法便使用该变量,并调用其commitText()方法,通过binder进程间通信,调用IInputConnectionWrapper对应的commitText()方法,将文字传递给对应的View。

3,WMS
updateFocusedWindowLocked 运行在其他线程,使用mH(Handler)发送消息到主线程,处理UI相关的操作,ViewRootImpl的windowFocusChanged方法,运行在其他线程(Binder线程),通过ViewRootImpl的mHandler 和其主线程进行交互

阅读全文
0 0
原创粉丝点击