JNI 전역 대상 및 네 이 티 브 스 레 드 JNIENV 전달

JNIENV*env 는 다 중 스 레 드 간 에 전달 할 수 없습니다.이 때 는 네 이 티 브 스 레 드 에 새로운 JNIENV 지침 을 생 성 해 야 합 니 다.
자바 VM 의 전역 변 수 를 저장 해 야 합 니 다.자바 전역 대상 을 저장 하려 면 전역 jobject 대상 을 만들어 야 합 니 다.
 
  
JavaVM *g_jvm = NULL;
jobject g_obj = NULL;


env->GetJavaVM(&g_jvm)
;JNIENV*env
//Attach   
if (g_jvm->AttachCurrentThread(&env, NULL) != JNI_OK) {
    LOGE("%s: AttachCurrentThread() failed", __FUNCTION__);
    return NULL;
}
g_obj = env->NewGlobalRef(job);
env->DeleteLocalRef(g_obj);//        ,         
g_jvm->DetachCurrentThread();//    JNIENV      ,        

좋은 웹페이지 즐겨찾기