Jni高阶知识点解析
发布时间
阅读量:
阅读量
JNI与NDK的关系
NDK能够为我们生成C/C++语言层的动态链接库;而JNI则充当了Java语言与C/C++语言之间的接口;值得注意的是这两者几乎与Android没有任何关联;这是因为Android作为基于Java的语言构建的基础平台;尽管如此但可以通过JNI实现与其他编程语言如C/C++之间的交互;因此我们通常会采用NDK加上JNI的方式来实现"Java + C"式的开发模式
JNIEnv与JavaVM
javenv 定义:这是一个与线程相关的属性的数据结构体, 它表示了Java在当前线程中的运行环境状态
ENVAPI与JavaVM:注意区分这两个概念;
ENVAPI 作用:
– 调用Java函数: ENVAPI是指代Java运行环境,并且能够利用ENVAPI来调用Java中的代码;
– 操作Java对象: 当Java对象传入JNI层时会转化为Jobject对象;为了对这些Jobject对象进行操作必须使用ENVAPI。
ENVY环境变量管理机制
在每个thread中都存在一个单独的envi指针。每个envi均为专属于各自独立的 thread;其他 thread不得使用本 thread中的$envi;不允许一个 thread 调用另一个 thread 的 environment var
全部评论 (0)
还没有任何评论哟~
