从新线程创建NewGlobalRef

时间:2012-04-23 15:08:40

标签: android-ndk

我有pthread的本机代码,当我调用pthread_create时,我将从JAVA代码中获取的JNIEnv *作为参数传递给线程函数。 JNIEnv *有效,所有使用的呼叫都在呼叫旁边成功                 (JCLASS)i_env-> NewGlobalRef(i_env-> findClass的( “我的/包/ COM / MYCLASS”)); 返回null。

为什么?

10xs, 内厄姆

1 个答案:

答案 0 :(得分:1)

JNIEnv是特定于线程的。你不能在另一个线程中使用一个JNIEnv。

要获取当前线程的JNIEnv,必须调用JavaVM对象的AttachCurrentThread。请在此处阅读:http://developer.android.com/guide/practices/design/jni.html#JavaVM_and_JNIEnv

为了让JavaVM对象使用JNI_OnLoad函数:http://developer.android.com/guide/practices/design/jni.html#native_libraries