码迷,mamicode.com
首页 > 其他好文 > 详细

NDK中可靠的获取JNIEnv*的方法

时间:2016-12-20 07:24:30      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:get   相关   blog   android   void   cpp   系统调用   amp   att   

使用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*的方法

标签:get   相关   blog   android   void   cpp   系统调用   amp   att   

原文地址:http://www.cnblogs.com/eaglelun/p/6201213.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!