Android 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 学习(五):References Api的更多相关文章
- Android JNI学习(五)——Demo演示
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
- Android JNI学习(四)——JNI的常用方法的中文API
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
- Android JNI学习(三)——Java与Native相互调用
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
- Android JNI学习(二)——实战JNI之“hello world”
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
- Android JNI 学习(一):JNI 简介
JNI 即 Java Native Interface 是 native 编程接口,它允许在Java虚拟机(VM)内运行Java代码与其他编程语言(主要是C和C++)编写的应用程序和库进行交互操作. ...
- Android JNI 学习(十一):Invocation Api
1. 简介 Invocation API允许软件提供商在原生程序中内嵌Java虚拟机.因此可以不需要链接任何Java虚拟机代码来提供Java-enabled的应用程序. 以下代码演示如何使用: #in ...
- Android JNI 学习(十):String Operations Api & Other Apis
一.String Operations(字符串操作) 1. NewString jstring NewString(JNIEnv *env, const jchar *unicodeChars, js ...
- Android JNI 学习(六):Object Operations Api
一.AllocObject jobjectAllocObject(JNIEnv *env, jclass clazz); 分配新 Java 对象而不调用该对象的任何构造函数.返回该对象的引用. cla ...
- Android JNI 学习(四):接口方法表 & Base Api & Exception Api
本文我们来总结一下JNI 提供的功能列表及相关的函数表. 注意:请注意使用术语“必须”来描述对JNI程序员的限制.例如,当您看到某个JNI函数必须接收非NULL对象时,您有责任确保不将NULL传递给该 ...
随机推荐
- winform使用PrintDocument控件打印以及oledb驱动
代码,需要加入的控件:PrintDocument.PageSetupDialog.PrintDialog.PrintPreviewDialog.BackgroundWorker,控件的Document ...
- JS的作用域链
JavaScript词法性质作用域 简而言之就是,在JavaScript中,函数的作用域在编译时期就已经确定下来了,而不是取决于他的执行位置 var num = 10; function method ...
- openstack系列文章(1)devstack安装测试Queens
1.在OpenStack 圈子中,有这么一句名言:”不要让朋友在生产环境中运行DevStack.但是初学者在没有掌握OpenStack CLI的情况下用devstack安装测试环境还是不错的.本系列文 ...
- VMware NAT做端口映射
转自百度 原文地址: https://jingyan.baidu.com/article/c35dbcb0d1ff248916fcbc0d.html 注意事项:Window宿主电脑要调整防火墙.
- hive资料
Hive基本操作 Hive 解锁操作 之前使用Hive,出现过一种情况:在代码正在执行insert into或insert overwrite时,中途手动将程序停掉,会出现卡死情况,只能执行查询操作, ...
- 20172306 2018-2019-2 《Java程序设计与数据结构》第九周学习总结
20172306 2018-2019-2 <Java程序设计与数据结构>第九周学习总结 教材学习内容总结 无向图 图是由结点和这些结点之间的连接构成 就图来说,结点叫做顶点,结点之间的连接 ...
- django添加控件
function bindRemoveCls() { $('#removeCls').click(function () { var options = $('#sel')[0].selectedOp ...
- txt 修改
[61TECH_HEIBAILIUYI]#gaIcldGcyd7ducFc3deaRaOdAd4dPdMdaenc1chaeedeGcfcfeyd1cedhbidIcXcIdBdbdvdfcvbjdr ...
- laravel 默认所有请求带session解决办法
laravel app/Http/Kernel.php protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\Encr ...
- 常见的hbase jar