TA的每日心情 | 奋斗 2022-7-4 09:45 |
---|
签到天数: 28 天 [LV.4]偶尔看看III
版主
- 积分
- 5479
|
启程输入法包含很多模块,核心就是两个:一个输入法接口,一个是输入法击键逻辑处理。
输入法接口包含IME和TSF两种,代表微软2代输入法。输入法接口是在编辑器中打开输入法时需要加载的模块,是一个导出特定接口的DLL。
由于编辑器程序可能是32位也可能是64位,因此输入法接口DLL也要对应的有32位和64位版本。
一般的输入法都是把击键处理直接放到这个输入法接口DLL中。击键处理不仅要处理击键逻辑,还要负责加载皮肤,显示界面等。
把这些代码全部放到输入法接口里,优点是由于都在同一个模块处理起来比较简单。
但缺点更多:
1、输入法接口模块会很大,4份输入法接口都要增大。
2、输入法崩溃后,会导致宿主进程崩溃。这是最大的问题。现在输入法逻辑都很复杂,随便一个BUG都可能导致用户的工作全部作废。
启程输入法的输入法接口只做最简单的按键转发,所有逻辑都在服务进程里处理。
这样的好处首先是输入法接口功能最小化,逻辑简单,升级也通常不需要升级这些接口,稳定性好,不容易崩溃。
其次就是所有界面相关的逻辑都在服务进程,服务进程只有一份,内存占用,磁盘占用都更少。
当然也有缺点:
启程输入法的服务进程默认是由输入法接口来启动的。在部分程序中(比如Edge),如果一个输入法没有经过签名,这个输入法是不允许在浏览器中启用第三方进程的。所以启程输入法在Edge浏览器中如果服务之前没有打开将不能使用。
|
|