NDK中可靠的获取JNIEnv*的方法
Posted 长空小鹰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NDK中可靠的获取JNIEnv*的方法相关的知识,希望对你有一定的参考价值。
使用NDK时,几乎任何方法都需要一个JNIEnv来调用。这个类是和线程相关的,如何可靠的获取它?
首先,作为NDK的so,必然有一个地方是由android系统调用的,这个调用将带来一个JNIEnv参数,不要使用它,而是调用:
JNIEnv->GetJavaVM(&g_javaVM);
获取一个JavaVM类型变量。
接着在需要使用JNIEnv的时候调用
int status; JNIEnv* _jniEnv = NULL; status = g_javaVM->GetEnv((void **)&_jniEnv, JNI_VERSION_1_6); if(status < 0) { status = g_javaVM->AttachCurrentThread(&_jniEnv, NULL); if(status < 0) { _jniEnv = NULL; } }
即可可靠的得到jnienv了。
以上是关于NDK中可靠的获取JNIEnv*的方法的主要内容,如果未能解决你的问题,请参考以下文章
eclipse android ndk 提示Type 'JNIEnv' could not be resolved 等信息解决办法
我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情