1

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

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

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

4

1 回答 1

0

找到了解决方案。

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

于 2013-03-11T13:28:16.010 回答