1. 程式人生 > >Android NDK學習筆記7-JNI的NIO操作

Android NDK學習筆記7-JNI的NIO操作

    JNI提供了在原生程式碼中使用NIO(I/O)的函式,與陣列操作相比更適合原生程式碼和java應用程式之間傳送大量資料。
● 建立直接位元組緩衝區
原生程式碼可以建立java應用程式使用的直接位元組緩衝區,該過程是以提供一個原生C位元組陣列為基礎,例如:

unsigned char* buffer = (unsigned  char*) malloc(1024)
……
jobject directBuffer;
directBuffer = (*env)->NewDirectByteBuffer(env,buffer,1024);

● 直接位元組緩衝區獲取
java應用程式中也可以建立直接位元組緩衝區,在原生程式碼中呼叫GetDirectBufferAddress函式可以獲取原生自己陣列的記憶體地址。例如:

unsigned char* buffer
buffer = (unsigned char*) (*env)->GetDirectBufferAddress(env,directBuffer);