Android JNI 学习:JNI 接口整理 — References Api
Posted 灰色飘零
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android JNI 学习:JNI 接口整理 — References Api相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章