获取JNIEnv的方法
2015-07-28 14:08
295 查看
static JavaVM *g_JavaVM; g_JavaVM = android::AndroidRuntime::getJavaVM(); static JNIEnv *GetEnv() { int status; JNIEnv *envnow = NULL; status = g_JavaVM->GetEnv((void **)&envnow, JNI_VERSION_1_4); if(status < 0) { status = g_JavaVM->AttachCurrentThread(&envnow, NULL); if(status < 0) { return NULL; } g_bAttatedT = true; } return envnow; } static void DetachCurrent() { if(g_bAttatedT) { g_JavaVM->DetachCurrentThread(); } }
从native世界进入java世界.熟悉jni编程的都知道,java到native的桥梁是JNIEnv,我们只要获得一个JNIEnv就能进入到java世界了.突破点就在AndroidRuntime,android::AndroidRuntime::getJavaVM();这个静态方法能够获取一个JavaVM, JavaVM->GetEnv方法能够获得一个JNIEnv了.JNIEnv是和线程相关的,使用前一定记得将其附加到当前进程,也要在适当的时候将其销毁.
相关文章推荐
- codevs1063
- 用Xposed框架拦截Android操作系统的短信接收
- iOS开发-优秀博客-实用技巧
- 插入排序
- android常用UI使用案例:Spinner
- iOS设置导航与其标题的颜色及字体大小和系统默认TabBar的相关设置与使用方法
- window undefined 被赋值问题
- NYOJ~懒省事的小明
- python发送请求两种代理设置方式
- [LeetCode] Unique Paths II
- 如何播放无限长度的音乐
- linux mysql php-frm php 配置文件
- PAT (Advanced Level) 1064. Complete Binary Search Tree (30) 递归建立CBST
- JVM常用分析工具JPS/JINFO/JSTACK/JSTAT/JMAP详解
- 解决IllegalStateException: Can not perform this action after onSaveInstanceState
- iOS开发的一些奇巧淫技
- js:{}与new Object()的区别是什么
- 表达式与条件组合
- iOS地图定位使用几个小功能(刚刚)
- Android访问网络,使用HttpURLConnection还是HttpClient?