手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Android C++ NDK如何使用数组传递数据

时间:2024-10-16 07:55:32

1、一、在JNI中创建指定类型的数组在Native中使用NewTypeArray函数可以创建数组实例。其中的Type可以是:Boolean、Char、Short、Int、Long、Float、Double,Object。(如图:创建数组的函数.png)。

Android C++ NDK如何使用数组传递数据

2、使用NewByteArray创建数组今天我们选择创建NewByteArray数组(如图:创建指定长度的Byte数组.png)。 爵奏笆棚与上一篇文章中我们讲的创建NewStringUTF函数一样,在内存溢出的情况下,那么headersBytesArr就会是NULL以通知Native代码抛出异常。jbyteArray headersBytesArr = NULL;/*** 创建长度为10的byte数组*/headersBytesArr = _env ->NewByteArray(10);if(headersBytesArr != NULL){LOGE("===赞,创建byte数组成功了===");}else{LOGE("===很遗憾,创建byte数组失败了,");}

Android C++ NDK如何使用数组传递数据

3、二、如何访问数组元素开发中访问数组元素可以有两种方式:一种是将数组复制给C数组,另一种是提议矣把噌供直接指向数组元素的指针。(1)把Java数组区复制到C数组中绿覆冗猩Native代码可以和使用普通的C数组一样的方式去使用和修改数组元素。如果是复制到C数组中使用GetByteArrayRegion方法(如图:从Java数组区复制到C数组.png);

Android C++ NDK如何使用数组传递数据

4、如果是Native代码想把修改后的数组提交给Java层的数组,就需要使用SetByteArrayRegion方法(如图:从Native数组区提交到Java数组.png);

Android C++ NDK如何使用数组传递数据

5、(2)对直接指针进行操作如果是对直接指针进行操作,Native代码需要使用GetByteArrayElements函数得到指向数组的直接指针。其中第二个参数是可选参数isCopy,可以让菀蒯踔观我们确定返回的数组地址是指向副本还是指向堆中的固定对象。(如图: 得到指向数组的直接指针.png)。

Android C++ NDK如何使用数组传递数据

6、在Native中使用完指针资源以后,一定要记得释放资源,不然很容易出现内存泄漏。释放指针使用ReleaseByteArrayElements(_javaArray, directHeader, 0)方法(如图:释放指向Java层数组的指针.png)。

Android C++ NDK如何使用数组传递数据
© 手抄报圈