2012-05-11 7 views
10

Ich habe eine native Methode, die etwas an einer Bitmap arbeitet. Innerhalb der Methode packe ich die Bilddaten über einen Methodenaufruf, der die Daten an einen jintArray Parameter schreibt, die ich mit NewIntArray erstellt habe:Muss ich ReleaseIntArrayElements für ein mit NewIntArray erstelltes Array aufrufen?

jintArray pixels = env->NewIntArray(width * height);

Ich brauche nicht dieses Array, um wieder zurück an den aufruf Java-Code - es ist nur für die Verarbeitung während dieser Methode. Muss ich ReleaseIntArrayElements unter pixels anrufen? Wenn ja, was gebe ich für den Parameter elems, da ich es nicht zurück in ein Java-Array kopieren muss?

void (JNICALL *ReleaseIntArrayElements) (JNIEnv *env, jintArray array, jint *elems, jint mode);

+2

Haben Sie 'GetIntArrayElements' genannt? –

+0

Nein, habe ich nicht. –

Antwort

11

Sie brauchen nicht mit ihm nichts zu tun. Es handelt sich um eine lokale Referenz, die beim Beenden der JNI-Methode bereinigt wird. Wie Edward Thompson oben andeutet, ist ReleaseIntArrayElements() das Gegenteil von GetIntArrayElements(). Es hat keine andere Funktion.

+0

Danke für die Klarstellung! –

+1

Wo kann ich die Dokumentation darüber lesen? – aProgrammer

+0

@anDroider Err, in der JNI-Spezifikation? – EJP

0

Sie haben nur Bezug auf Mitteilung:

jintArray pixels = env->NewIntArray(width * height); 
... 
env->DeleteLocalRef(pixels) 
Verwandte Themen