深入理解JNI
来源:互联网 发布:java中电影院售票系统 编辑:程序博客网 时间:2024/06/07 08:54
1. 主程序JAVA 调用C函数
1.1 注册JNI
(1) 静态注册;
(2) 动态注册;动态注册的函数的时机: System.loadLibray 加载JNI动态库,查找 JNI_OnLoad函数,如有,就调用它。动态注册就在这里。
1.2 JNIEnv
疑问:
#if defined(__cplusplus)typedef _JNIEnv JNIEnv;typedef _JavaVM JavaVM;#elsetypedef const struct JNINativeInterface* JNIEnv;typedef const struct JNIInvokeInterface* JavaVM;#endif
为什么C 和C++ JNIEnv结果的设计要不同??第一个参数不一样,即C++,通过this即可至指定。
重要:JNIEnv 是一个线程相关的变量。但 JavaVM 独有一份,它是JAVA虚拟机在JNI曾的代表。
1.3. Java 数据类型和JNI数据类型转换
(1) 基本类型转化关系” “Primitive types that match up with Java equivalents“
(2) JNI引用类型和java引用类型的转化关系
1.4 JNI 操作JAVA对象
(1) 访问java对象
(2) 操作成员变量(域) 和方法
(3) 关键区别 局部引用和 全局引用:局部引用是JNI默认的,它仅在JNI本地函数内有效,当JNI本地函数返回后,其内部的引用就会失效。
可以用nev->NewGlobalRef 得到全局引用。
2. 主程序C/C++,调用JAVA类: JNI 提供了Invocation API
关键函数JNI_CreateJavaVM
以Invocation API 在Android中的应用举例,zygote进程
以system_server: 为例,在函数onload.cpp 已经实现了 JNI_OnLoad() 函数。
3. Android NDK 开发,后面再学
3. JNI 异常处理
- android --- 深入理解 JNI
- Android - 深入理解 JNI
- Android - 深入理解 JNI
- 深入理解JNI
- 深入理解JNI
- 深入理解JNI
- android --- 深入理解 JNI
- 深入理解JNI
- 深入理解JNI
- 《深入理解Android》导读之JNI
- 深入理解JNI---碎碎念2
- 【Android学习之】深入理解JNI
- 《深入理解Android 卷I》- JNI
- 深入理解Android开发之JNi
- JNI理解(今天肯定没有时间深入了)
- JNI——《深入理解(I)》学习笔记2
- JNI(深入理解Android卷I)的读书笔记
- 深入JNI
- 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置
- [leetcode 101] Symmetric Tree
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Linux中什么时候用包名、什么时候用包全名、以及RPM包的安装、升级与卸载
- 取球游戏-题解
- 深入理解JNI
- 第五届蓝桥杯C/C++本科B组(真题试做)(6~8)
- 95横竖屏切换导致Activity生命周期变化对杀毒的影响
- 创建站点和项目文件
- OpenStack Swift 云存储技术详解
- HTML总结
- 深入理解Binder
- POJ1986 Distance Queries【最近公共祖先】【Tarjan-LCA算法】
- Oracle修改用户密码