站内搜索

热门搜索: 直缝焊接机 矿井提升机 循环球式转向器图纸 机器人手爪发展史 管道机器人dwg 动平衡试验台设计

23JNI与Android VM之关系.doc23JNI与Android VM之关系.doc

收藏 分享

资源预览需要最新版本的Flash Player支持。
您尚未安装或版本过低,建议您

23JNI与ANDROIDVM之关系1从如何载入SO档案谈起由于ANDROID的应用层级类别都是以JAVA撰写的,这些JAVA类别转译为DEX型式的BYTECODE之后,必须仰赖DALVIK虚拟机器VMVIRTUALMACHINE来执行之。VM在ANDROID平台里,扮演很重要的角色。此外,在执行JAVA类别的过程中,如果JAVA类别需要与C组件沟通时,VM就会去加载C组件,然后让JAVA的函数顺利地呼叫到C组件的函数。此时,VM扮演着桥梁的角色,让JAVA与C组件能透过标准的JNI接口而相互沟通。应用层级的JAVA类别是在虚拟机器VMVITUALMACHINE上执行的,而C组件不是在VM上执行,那么JAVA程序又如何要求VM去加载LOAD所指定的C组件呢可使用下述指令SYSTEMLOADLIBRARYSO的檔名;例如,在上一节的范例里的NATIVEJNIADDER类别,其程序代码看看ANDROID框架里所提供的MEDIAPLAYERJAVA类别,内含指令PUBLICCLASSMEDIAPLAYER{STATIC{SYSTEMLOADLIBRARYMEDIA_JNI;}}这要求VM去加载ANDROID的/SYSTEM/LIB/LIBMEDIA_JNISO档案。载入SO档之后,JAVA类别与SO档就汇合起来,一起执行了。2如何撰写SO的入口函数JNI_ONLOAD与JNI_ONUNLOAD函数之用途当VM执行到SYSTEMLOADLIBRARY函数时,首先会去执行C组件里的JNI_ONLOAD函数。它的用途有二1告诉VM此C组件使用那一个JNI版本。如果你的SO文件没有提供JNI_ONLOAD函数,VM会默认该SO檔是使用最老的JNI11版本。由于新版的JNI做了许多扩充,如果需要使用JNI的新版功能,例如JNI14的JAVANIOBYTEBUFFER,就必须藉由JNI_ONLOAD函数来告知VM。2由于VM执行到SYSTEMLOADLIBRARY函数时,就会立即先呼叫JNI_ONLOAD,所以C组件的开发者可以藉由JNI_ONLOAD来进行C组件内的初期值之设定INITIALIZATION。例如,在ANDROID的/SYSTEM/LIB/LIBMEDIA_JNISO档案里,就提供了JNI_ONLOAD函数,其程序代码片段为//DEFINELOG_NDEBUG0DEF
编号:201312142343097834    类型:共享资源    大小:63.00KB    格式:DOC    上传时间:2013-12-14
  
3
关 键 词:
IS 电气 高压 110kv 220kv 550kv 800kv
  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:23JNI与Android VM之关系.doc
链接地址:http://www.renrendoc.com/p-217834.html

当前资源信息

4.0
 
(2人评价)
浏览:14次
baixue100上传于2013-12-14

官方联系方式

客服手机:17625900360   
2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   

精品推荐

相关阅读

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

网站客服QQ:2846424093    人人文库上传用户QQ群:460291265   

[email protected] 2016-2018  renrendoc.com 网站版权所有   南天在线技术支持

经营许可证编号:苏ICP备12009002号-5