我的应用程序是一个带有一些本机代码的Android应用程序。

Java代码通过new Thread(new Runnable)启动线程,在本机代码中,我通过AttachCurrentThread将该线程附加到JVM。

在该线程中调用的本机函数是一个无限循环,它将侦听简单事件(布尔变量)并调用另一个本机函数,后者将使用适当的JNIEnv指针和jobject在Java端填充2个Java变量并调用void 显示数据的方法。 该循环的原因是,正常调用该函数的开销(要做很多分配和销毁)很可能很大。

唯一的问题是,尽管我可以续订JNIEnv指针,但我不知道如何为Jobject进行操作。

所谓的jobject,是指通过像这样的函数调用传递给本地代码的jobject

jint Java_com_example_example_MainActivity_NativeFunc( JNIEnv* env,

jobject obj)

{

return;

}

如果打算在本机代码中保留对对象的引用,则需要通过创建新的全局引用或新的弱全局引用来显式地保留引用(并可能稍后再发布)。 在后一种情况下,您还需要在使用前检查是否等于null。

如果您用"更新"来表示其他含义,请解释一下,因为AFAIK的"更新"不是Java的标准说法。

The Java code starts a thread via new Thread(new Runnable), in the native code, I attach that thread to the JVM via AttachCurrentThread.

您不必将JVM附加到使用Java代码创建的线程上,它已经附加了。

如果我正确理解了您的问题,您将得到一个jobject,并希望以后以其他本机方法访问该对象。 为此,您可以使用NewGlobalRef:

jobject myGlobalReference = env->NewGlobalRef(obj);

您可以将该jobject存储在全局C / C ++变量中,并在以后使用。 它将保持有效,直到JVM死掉或您使用DeleteGlobalRef删除引用为止。 请记住,只要您不删除全局引用,垃圾收集就不会收集该对象的所有Java引用!

android jni jobject,关于android:无法更新JNI中的jobject相关推荐

  1. android sudio jni 调用so_UE4:UPL 与 JNI 调用的最佳实践

    本篇文章搬运自我自己的博客,原文链接: https://imzlp.me/posts/27289/ 作者: 查利鹏 在使用UE4开发Android时,有时需要获取平台相关的信息.或者执行平台相关的操作 ...

  2. NDK JNI方式读写Android系统的demo(二)

    NDK & JNI(方式读写Android系统的Demo) 大家都知道Android系统是一种基于Linux的自由及开放源码的操作系统,所以读写GPIO也可以直接用Linux那一套export ...

  3. 利用JNI技术在Android中调用C++形式的OpenGL ES 2.0函数

    1.                 打开Eclipse,File-->New-->Project--->Android-->AndroidApplication Projec ...

  4. 利用JNI技术在Android中调用C++代码

    JNI是Java Native Interface的简称,也就是Java本地接口,它提供了若干的API实现Java和其它语言的通信(主要是C&C++). 1.打开Eclipse,File--& ...

  5. android图文介绍NDK安装及简单jni demon的实现

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 android NDK可以用来编译android的native方法,也可以将c和c++的代码编译成.s ...

  6. 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口 6...

    在上两篇文章中,我们介绍了如何为Android系统的硬件编写驱动程序,包括如何在Linux内核空间实现内核驱动程序和在用户空间实现硬件抽象层接口.实现这两者的目的是为了向更上一层提供硬件访问接口,即为 ...

  7. android jni 调用java_Android 基于NDK的JNI开发 C调用java和java调用C

    首先,这里所要讲的主要是C调用java的,因为这里网上也没有一个详细的资料,其次,我开发android应用没多久,其中java错误敬请谅解! 关于配置NDK环境问题应该不用再赘述了,这个网上有很多,只 ...

  8. android的动态注册,Android JNI 函数注册的两种方式(静态注册/动态注册)

    JNI/NDK 在Android开发中,由于种种原因我们需要调用C/C++代码, 这个时候就要用到Android开发者都听说过的JNI(Java Native Interface)了, 在调用JNI相 ...

  9. Android NDK开发之一:NDK与JNI基础

    一.导读 在Android OS上开发应用程序,Google提供了两种开发包:SDK和NDK.你可以从Google官方查阅到有许多关于SDK的优秀书籍.文章作为参考,但是Google提供的NDK资源, ...

最新文章

  1. 升级失败?用TFTP修复Linksys无线路由器固件
  2. ATAC-seq学习记录
  3. (转)MSSQL中如何用SQL清除所有表的数据(downmoon)?
  4. 【解决方案】istio-ingressgateway HTTP probe failed with statuscode: 503
  5. elasticSearch6源码分析(8)RepositoriesModule模块
  6. SpringBoot笔记:SpringBoot2.3读取应用配置参数的几种方式
  7. POJ1015-Jury Compromise【01背包,dp】
  8. 计算机电路的基本罗门,模拟电路设计经验12条
  9. android oat如何提取dex文件字节码,Android: 使用oatdump反编译oat文件
  10. Spring AOP实现声明式事务代码分析
  11. Android ListView 技巧 (一) Android ListView Header
  12. android shape 使用小结
  13. Java 标注(Annotation)详解
  14. 全国快递物流查询公司mysql数据库语句
  15. Java注释 及 标识符
  16. C#+sqlserve实现登陆界面
  17. 【2019.05】腾讯防水墙滑动验证码破解 python + selenium + OpenCV
  18. 《The Zen of Python, Explained》Posted by Al Sweigart in python - 中译版
  19. sim7600ce 拨号上网测试_SIM7600CE应用程序调试流程
  20. 你真的知道什么是置信区间吗?

热门文章

  1. 计算机三维设计基础知识,三维设计基础-中国大学mooc-题库零氪
  2. 每日一题(十)function showCase(value){ switch(value){ case 'A': console.log('case
  3. 十六进制颜色代码大全
  4. 单击单元格实现可编辑的表格(学号和姓名下)
  5. php5.2 apache2.2,windows中PHP5.2.14以及apache2.2.16安装配置
  6. regex和集合(collection)
  7. java解析tfrecord_TensorFlow高效读取数据的方法——TFRecord的学习
  8. python-flask框架-mysql-月新增用户数、当月活跃用户数等的查询及返回数据的逻辑
  9. vmware虚拟机下载地址和虚拟机各种系统win7和win10系统
  10. 《简易个税计算器》技术支持网址(URL)