2012-05-11 12 views
10

Ho un metodo nativo che funziona su una bitmap. All'interno del metodo afferro i dati di immagine tramite una chiamata di metodo che scrive i dati a un parametro jintArray che ho creato con NewIntArray:Devo chiamare ReleaseIntArrayElements su un array creato con NewIntArray?

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

non ho bisogno di tornare questo array di nuovo alla chiamata Codice Java: è solo per l'elaborazione in questo metodo. Devo chiamare lo ReleaseIntArrayElements allo pixels? In tal caso, cosa passo per il parametro elems, poiché non è necessario copiarlo su un array Java?

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

+2

Avete chiamato 'GetIntArrayElements'? –

+0

No, non l'ho fatto. –

risposta

11

Non c'è bisogno di fare qualsiasi cosa con esso. È un riferimento locale e verrà eliminato quando il metodo JNI verrà chiuso. Come suggerisce Edward Thompson sopra, ReleaseIntArrayElements() è il contrario di GetIntArrayElements(). Non ha altra funzione.

+0

Grazie per il chiarimento! –

+1

Dove posso leggere la documentazione a riguardo? – aProgrammer

+0

@anDroider Err, nella specifica JNI? – EJP

0

si deve liberare unico riferimento:

jintArray pixels = env->NewIntArray(width * height); 
... 
env->DeleteLocalRef(pixels) 
Problemi correlati