1. 程式人生 > >Android JNI 學習(五):JNI 接口整理 — References Api

Android JNI 學習(五):JNI 接口整理 — References Api

-a delet 內存 引用 5.4 cap 兼容 error span

1. NewGlobalRef(創建全局引用)

jobjectNewGlobalRef(JNIEnv *env, jobject obj);

創建 obj 參數所引用對象的新全局引用。obj 參數既可以是全局引用,也可以是局部引用。全局引用通過調用 DeleteGlobalRef() 來顯式撤消。

參數:

env:JNI 接口指針。

obj:全局或局部引用。

返回值:

返回全局引用。如果系統內存不足則返回 NULL

2. DeleteGlobalRef(刪除全局引用)

void DeleteGlobalRef(JNIEnv *env, jobject globalRef);

刪除 globalRef

所指向的全局引用。

參數:

env:JNI 接口指針。

globalRef:全局引用。

3. NewLocalRef(創建局部引用)

jobject NewLocalRef(JNIEnv *env, jobject ref); 

創建 obj 參數所引用對象的新局部引用。ref 參數既可以是全局引用,也可以是局部引用。全局引用通過調用 DeleteLocalRef() 來顯式撤消。

參數:

env:JNI 接口指針。

ref:全局或局部引用。

返回值:

返回局部引用。如果系統內存不足則返回 NULL

4. DeleteLocalRef(刪除局部引用)

void DeleteLocalRef(JNIEnv *env, jobject localRef);

刪除 localRef所指向的局部引用。

參數:

env:JNI 接口指針。

localRef:局部引用。

5. EnsureLocalCapacity(確保局部引用的容量)

jint EnsureLocalCapacity(JNIEnv *env, jint capacity); 

確保至少給定數量的局部引用能在當前線程被創建。如果創建成功就返回0,否則就會返回一個負數並且拋出OutOfMemoryError異常。

當naitve方法開始運行時,VM會自動保證至少16個局部引用能被創建。

為了兼容,VM會分配超過聲明的局部引用數量的內存。

6. NewWeakGlobalRef(創建全局弱引用)

jweak NewWeakGlobalRef(JNIEnv *env, jobject obj); 

創建 obj 參數所引用對象的新全局弱引用。ref 參數既可以是全局引用,也可以是局部引用。全局引用通過調用 DeleteWeakGlobalRef() 來顯式撤消。

參數:

env:JNI 接口指針。

obj:全局或局部弱引用。

返回值:

返回局部引用。如果系統內存不足則返回 NULL

7. DeleteWeakGlobalRef(刪除全局弱引用)

void DeleteWeakGlobalRef(JNIEnv *env, jweak obj);

刪除 obj 所指向的全局弱引用。

參數:

env:JNI 接口指針。

obj:全局弱引用。

Android JNI 學習(五):JNI 接口整理 — References Api