jni数据类型及使用
来源:互联网 发布:javascript怎么学 编辑:程序博客网 时间:2024/06/06 05:22
《Pro Android C++ with the NDK》学习笔记
- java数据类型与jni数据类型的区分与识记
- java数据类型与jni类型映射表
- java数据类型在jni中的使用
- java对象类型在jni中的使用
一、java数据类型与jni数据类型的区分与识记
java中的返回值void与jni中的void是完全对应的。
java中的基本数据类型(byte,short,int,long,float,double,boolean,char)在jni中对应的数据类型在前面加上j (jbyte,jshort,jint,jlong,jfloat,jdouble,jboolean,jchar)。
java中的对象,包括类库中定义的类、接口,都对应jni中的jobject。
java中基本数据类型的数组对应与jni中的jarray类型(type就是上面说的8中基本数据类型)。
java中对象的数组对应于jni中jobjectArray类型。
二、java数据类型与jni类型映射表
三、java数据类型在jni中的使用
JNI通过JNIEnv提供的操作Java数组的功能。它提供了两个函数:一个是操作java的简单型数组的,另一个是操作对象类型数组的。
因为速度的原因,简单类型的数组作为指向本地类型的指针暴露给本地代码。因此,它们能作为常规的数组存取。这个指针是指向实际的Java数组或者Java数组的拷贝的指针。另外,数组的布置保证匹配本地类型。
为了存取Java简单类型的数组,你就要要使用GetXXXArrayElements函数(见下表),XXX代表了数组的类型。这个函数把Java数组看成参数,返回一个指向对应的本地类型的数组的指针。
当你对数组的存取完成后,要确保调用相应的ReleaseXXXArrayElements函数,参数是对应Java数组和GetXXXArrayElements返回的指针。如果必要的话,这个释放函数会复制你做的任何变化(这样它们就反射到java数组),然后释放所有相关的资源。
为了使用java对象的数组,你必须使用GetObjectArrayElement函数和SetObjectArrayElement函数,分别去get,set数组的元素。GetArrayLength函数会返回数组的长度。
四、java对象类型在jni中的使用
JNI提供的另外一个功能是在本地代码中使用Java对象。通过使用合适的JNI函数,你可以创建Java对象,get、set 静态(static)和实例(instance)的域,调用静态(static)和实例(instance)函数。JNI通过ID识别域和方法,一个域或方法的ID是任何处理域和方法的函数的必须参数。下表列出了用以得到静态(static)和实例(instance)的域与方法的JNI函数。每个函数接受(作为参数)域或方法的类,它们的名称,符号和它们对应返回的jfieldID或jmethodID。
如果你有了一个类的实例,它就可以通过方法GetObjectClass得到,或者如果你没有这个类的实例,可以通过FindClass得到。符号是从域的类型或者方法的参数,返回值得到字符串,如下表所示。
- jni数据类型及使用
- JNI中数据类型及签名类型
- JNI 数据类型及方法调用对照表
- android--jni--基本数据类型的使用
- JNI常用数据类型转换库函数使用总结
- JNI 数据类型
- JNI数据类型
- JNI 数据类型
- JNI 数据类型
- JNI 数据类型
- JNI数据类型
- JNI 数据类型
- JNI数据类型
- JNI 数据类型
- JNI 数据类型
- JNI数据类型
- jni数据类型
- JNI数据类型
- [leetcode: Python]507. Perfect Number
- Android Binder库结构
- #比特币病毒#来袭,教你如何保护好电脑
- cloudera部分产品高可用配置-hdfs、hivermatestore、hue、impala
- js弹出框、对话框、提示框、弹窗总结
- jni数据类型及使用
- eclipse快捷键大全
- echarts饼状图
- 5.16特长生模拟题 买装备
- IOS应用提交所需的ICON
- swjtuoj 2385 Maximize The Beautiful Value
- window.location
- [LeetCode] Course Schedule
- Android中的线程池