将本机 int[] 包装到一个 jintarray 中



我有一个本机方法,它调用Java函数来创建位图,然后将位图数据作为int数组返回。

这个方法不是很有效,因为我需要创建一个位图,然后一个IntBuffer来复制位图数据,然后本机方法创建一个新的int数组来存储数据。然后IntBuffer被回收(Bitmap对象可以被重用),当我创建超过10个位图时,垃圾收集器开始减慢应用程序的速度。

我可以在JNI中创建int数组,将其包装成jintarray并直接在Java中使用它吗?

找到解决办法了

我可以使用JNI函数NewDirectByteBuffer将本机int*(或char*)包装到ByteBuffer中。然后使用它作为参数,而不是jintarray。

最新更新