您的位置:首页 > 其它

获取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是和线程相关的,使用前一定记得将其附加到当前进程,也要在适当的时候将其销毁.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: