Advertisement

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)

还没有任何评论哟~