android源码有pinyinime,Android PinyinIME 源码笔记 -- 2. 底层服务启动

PinyinIME输入法启动过程介绍见“附A.1 输入法的启动”http://blog.sina.com.cn/s/blog_4177a2e20100lsh0.html,从该文介绍可知当PinyinDecoderService创建时,初始化工作包括了收集系统静态字典文件信息以及用户字典路径信息,然后调用C++代码接口nativeImOpenDecoderFd完成底层服务的启动(另一个C++代码接口nativeImOpenDecoder也完成同样的功能,除了传递不同的参数)。

下图是C++函数nativeImOpenDecoderFd的原形如下:

JNIEXPORT jboolean JNICALL nativeImOpenDecoderFd(JNIEnv* env,

jclass jclazz,

jobject fd_sys_dict,

jlong startoffset,

jlong length,

jbyteArray fn_usr_dict) {...}

函数的调用栈如下图示:

a4c26d1e5885305701be709a3d33442f.png

函数首先从Java虚拟机空间通过JNI接口取得静态系统字典文件描述符并克隆到本地C++程序空间文件描述符newfd和保存用户字典文件名的字节数组fud。然后与传入的静态字典文件开始位置的偏移startoffset和文件长度longth一起作为参数调用函数im_open_decoder_fd(),最后关闭newfd,并释放Java虚拟机分配的用来保存用户字典文件名的字节数组(调

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值