获取JNIEnv的方法

来源:互联网 发布:淘宝卖家怎么添加客服 编辑:程序博客网 时间:2024/05/23 12:55


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是和线程相关的,使用前一定记得将其附加到当前进程,也要在适当的时候将其销毁.


0 0