我有一个本地方法可以对位图进行一些操作。在方法内部,我通过方法调用获取图像数据,该方法调用将数据写入我使用jintArray
创建的NewIntArray
参数:
jintArray pixels = env->NewIntArray(width * height);
我不需要将此数组返回给调用的Java代码 - 它仅用于在此方法中进行处理。我是否需要在ReleaseIntArrayElements
上致电pixels
?如果是这样,我将为elems
参数传递什么,因为我不需要将其复制回Java数组?
void (JNICALL *ReleaseIntArrayElements)
(JNIEnv *env, jintArray array, jint *elems, jint mode);
答案 0 :(得分:13)
您无需对其执行任何操作。它是一个本地引用,当您的JNI方法退出时它将被清除。正如爱德华汤普森暗示的那样,ReleaseIntArrayElements()
与GetIntArrayElements().
相反。它没有其他功能。
答案 1 :(得分:1)
您必须仅发布参考:
jintArray pixels = env->NewIntArray(width * height);
...
env->DeleteLocalRef(pixels)