Android JNI数组操作
2016-12-18 18:01
260 查看
数组操作
JNI把Java数组当成引用类型来处理,JNI提供必要的函数和处理Java数组。
创建数组
用NewArray函数在原生代码中创建数组实例,其中可以是Int,Char,Boolean等,例如NewIntArray,NewCharArray等,使用这些函数应该以参数的形式给出数组大小。在内存溢出的情况下,NewArray函数将返回NULL以通知虚拟机有异常抛出,并会停止运行,
访问数组元素
JNI提供两种方式访问Java数组元素的方法,可以将数组的代码复制成C++数组或者让JNI提供指向数组元素的指针。其中GetArrayRegion函数将给定的基本Java数组复制到给定的C数组中。例如:
如果要将修改后的C++数组提交给JAVA数组时,可以使用SetArrayRegion函数将C数组复制回Java数组中
下面代码为在JNI层新建第三方C++文件,并调用其中函数,实现数组加法,在Java层显示结果:
第三方C++文件,其中.h中新建自定义函数:
在cpp中进行计算:
界面显示:
最终效果图:
这就是在JNI层对数组进行的基本操作,对于熟悉C++的人来说,应该好理解。
Demo下载地址
JNI把Java数组当成引用类型来处理,JNI提供必要的函数和处理Java数组。
创建数组
用NewArray函数在原生代码中创建数组实例,其中可以是Int,Char,Boolean等,例如NewIntArray,NewCharArray等,使用这些函数应该以参数的形式给出数组大小。在内存溢出的情况下,NewArray函数将返回NULL以通知虚拟机有异常抛出,并会停止运行,
访问数组元素
JNI提供两种方式访问Java数组元素的方法,可以将数组的代码复制成C++数组或者让JNI提供指向数组元素的指针。其中GetArrayRegion函数将给定的基本Java数组复制到给定的C数组中。例如:
jint nativeArray[5]; (*env)->GetIntArrayRegion(env,javaArray,0,5,nativeArray);
如果要将修改后的C++数组提交给JAVA数组时,可以使用SetArrayRegion函数将C数组复制回Java数组中
(*env)->SetIntArrayRegion(env,javaArray,0,5,nativeArray);
下面代码为在JNI层新建第三方C++文件,并调用其中函数,实现数组加法,在Java层显示结果:
第三方C++文件,其中.h中新建自定义函数:
在cpp中进行计算:
界面显示:
最终效果图:
这就是在JNI层对数组进行的基本操作,对于熟悉C++的人来说,应该好理解。
Demo下载地址
相关文章推荐
- android jni操作数组
- android jni操作数组
- Android jni 编程2(对基本类型一维整型数组的操作)
- Android中的JNI数组操作教程
- Android jni 编程3(对基本类型一维整型数组的操作)总结版
- android jni操作数组
- Android调用jni全过程,方便以后操作。
- ANDROID JNI之JAVA域与c域的互操作
- JNI及Android JNI 开发基本知识和具体操作步骤
- jni数组操作
- Android调用jni全过程,方便以后操作。
- JNI操作数组代码
- ANDROID JNI之JAVA域与c域的互操作
- Android的jni的调用C,C++的几个应用(基本类型,数组,类(结构体))文档-源码
- Android调用jni全过程,方便以后操作。
- Android调用jni全过程,方便以后操作
- android中使用jni 在c++层返回一个数组到java
- ANDROID JNI之JAVA域与c域的互操作
- JNI操作数组
- 【转】ANDROID JNI之JAVA域与c域的互操作