我有一个本机方法,它调用Java函数来创建位图,然后将位图数据作为int数组返回。
这个方法不是很有效,因为我需要创建一个位图,然后一个IntBuffer来复制位图数据,然后本机方法创建一个新的int数组来存储数据。然后IntBuffer被回收(Bitmap对象可以被重用),当我创建超过10个位图时,垃圾收集器开始减慢应用程序的速度。
我可以在JNI中创建int数组,将其包装成jintarray并直接在Java中使用它吗?
找到解决办法了
我可以使用JNI函数NewDirectByteBuffer将本机int*(或char*)包装到ByteBuffer中。然后使用它作为参数,而不是jintarray。