Android之jni解决JNIEnv跨线程问题

1、问题

 

JNIEnv是一个线程相关的变量
JNIEnv 对于每个 thread 而言是唯一的 
JNIEnv *env指针不可以为多个线程共用
 

 

 

 

2、解决办法

 

java虚拟机的JavaVM指针是整个jvm公用的,我们可以用JavaVM来得到当前线程的JNIEnv指针,可以使用javaAttachThread保证取得当前线程的Jni环境变量
 
下面的写法是cpp文件
JavaVM *g_jvm = NULL;
jobject g_obj = NULL;
//由java调用来建立JNI环境
JNIEXPORT void Java_****_setJNIEnv( JNIEnv* env, jobject obj){//保存全局JVM以便在子线程中使用env->GetJavaVM(&g_jvm);//不能直接赋值(g_obj = obj)g_obj = env->NewGlobalRef(obj);}
//线程里面JNIEnv *env;jclass cls;jmethodID mid;//Attach主线程if(g_jvm->AttachCurrentThread(&env, NULL)  !=  JNI_OK){return NULL;}//找到对应的类cls = env->GetObjectClass(g_obj);if(cls == NULL){go

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server 提高创建索引速度的 2 个方法

方法 1、 使用tempdb来提速 create index index_name on table_name (column_list) with(sort_in_tempdb on); 方法 2、 使用多线程为来提速 create index index_name on table_name (column_list) with(maxdop 4); maxdop ( max dgree of parallelism)这下记到了吧 转载于:h…

iOS基础-高级视图-UITableView--静态单元格

静态单元格适用场合:分为好几组且图标和内容不规则。并且百年不变动。1.新建一个MJViewController,继承自TableViewController2.将storyboard的控制器View删除,拖一个TableViewController,将Class设置为MJViewController3.将Conte…

c#使用FluentFtp实现一行代码实现ftp上传下载等

一:简介FluentFTP 是一个完全托管的 .NET 和 .NET Standard 的 FTP 和 FTPS 库,针对速度进行了优化。它提供了广泛的 FTP 命令、文件上传/下载、SSL/TLS 连接、自动目录列表解析、文件哈希/校验和、文件权限/CHMOD、FTP 代理、FXP 传输、UTF-8 支持、异步/等待支持、…

软件体系结构知识点整理

包括软件体系结构风格、uml、软件质量属性、面向对象设计原则以及设计模式 pdf及goodnote版本

《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.2 使用窗口函数的解决方案简介...

本节书摘来自异步社区出版社《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》一书中的第1章,第1.2节,作者: 【美】Itzik Ben-Gan,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.2 使用窗口函数的解决方案简介 …

第一台定制商用NAS存储服务器

记得前不久在网络上看到有人在问有没有人将openfiler进行实际应用,以我看应该是有的,而且不少,你是否在用,或者曾经用过呢?LINUX加PC主机来定制各种应用型服务器,一直是我想去推广的,也就是如何…

[Java] java中的接口定义

在Java的通常规范中,对数据成员的修改要通过接口提供的方法进行(如下面示例中接口中的void learnMath(int hours)和void learnEnglish(int hours)),这个规范起到了保护数据的作用。用户不能直接修改数据,必须通过相应的…

ASP.NET Core(十)Configuration 配置优先级详解

ASP.NET Core 项目启动,默认执行顺序为:宿主 Host -> 读取配置 -> 日志设置 -> 注册服务(DI)-> 添加中间件 -> WebHost 监听 -> 后台 Work 启动。配置的加载和读取是在启动流程的最前面。微软关于 ASP.NET Core…

《BeagleBone开发指南》——1.7 小结

本节书摘来异步社区《BeagleBone开发指南》一书中的第1章,第1.7节,作者:【爱】Derek Molloy(莫洛伊),更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.7 小结 在完成本章后,你应该具备…

软件配置管理(一)配置管理概念与目标

软件配置管理的定义 软件配置管理(Software Configuration Management,SCM)是一组针对软件产品的追踪和控制活动,它贯穿于项目生命周期的始终,并代表软件产品接受各项评审。 软件配置管理的目的 软件配置管理是贯穿于整个软件过…

Android之运行Java.lang.UnsatisfiedLinkError的错误解决办法

1、问题 部分手机运行的时候在jni层出现这个错误,导致手机崩溃 Java.lang.UnsatisfiedLinkError 2、解决办法 是因为在我是这样写的 static {System.loadLibrary("");} 把报错的依赖加进去 static {System.loadLibrary("");System.loadLibrary("&q…

带中文索引的ListView 仿微信联系人列表

因为各种原因,项目经理和产品经理把我做的东西给否定了,所以决定分享出去。 主要功能: 1 、带中文索引的ListView 2、自己定义顶部搜索视图,能够对返回button,搜索button加入事件监听,带动画的咧&#xff0…

APP访问路径和销售归因分析

用户浏览路径是分析用户行为的关键,也是页面分析的关键。虽然可以很方便的获取到PV数据,但却无法知道用户是浏览哪些页面后来到当前页面,也不知道浏览过当前页面的用户又去了哪些其他页面。诸如此类的问题还有:某专题活动产生了多…

解决 ASP.NET Core 部署到 IIS,更新项目时文件夹正在使用错误

前言虽然 ASP.NET Core 应用程序是跨平台的,但我们还是经常将它部署到 Windows 的 IIS 下。当 ASP.NET Core 站点运行时,它会锁定正在使用的程序集,如果这时向站点目录下复制文件进行更新,会提示文件被占用的错误:这时…

linux之用xargs删除这个目录下面后缀为txt的文件(包括子目录)

1问题 删除这个目录下面后缀为txt的文件(包括子目录) 2、xargs命令解决 find . -name "*.txt" | xargs rm -rf3、xargs相关用途 比如在特定的文件里面找到相应的关键字 find . -name "*.txt" | xargs grep word或者 grep -r wor…

软件配置管理(二)配置管理角色与过程

文章目录一、配置管理角色及职责项目经理(PM)配置控制委员会(CCB)配置管理员(CMO)系统集成员(SIO)开发人员(DEV)二、配置管理基本流程计划阶段开发和维护阶段…

JAVA多线程和并发基础面试问答

原文链接 译文连接 作者:Pankaj 译者:郑旭东 校对:方腾飞 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识…

学习笔记(二)JavaScript基本概念(语法,数据类型,控制语句,函数)

一.语法 1.javascirpt中一切(变量,函数名和操作符)是严格区分大小写的。 2.javascript(标识符) 所谓标识符,就是指变量,函数,属性的名字,或者函数的参数。 命名规则&…

Android悬浮窗口的实现

效果图:(悬浮框可拖动) 在项目开发中有一个需求:弹出悬浮窗后,响应悬浮窗的事件再弹出对话框,但是对话框怎么也不显示。也就是说在弹出悬浮框的同时,不能再弹出对话框,可能的原因&am…

Android之invalid address or address of corrupt block 0xabb494a0 passed to dlfree崩溃解决办法

1、问题 手机崩溃 invalid address or address of corrupt block 0xabb494a0 passed to dlfree Fatal signal 11 (SIGSEGV), code 1, fault addr 0xdeadbaad in tid 29629 (AsyncTask #1) #00 pc 000308a6 /system/lib/libc.so (dlfree1285) 2、原因 const char* 转char *的…