Android ndk 从新线程创建NewGlobalRef

Android ndk 从新线程创建NewGlobalRef,android-ndk,Android Ndk,我有pthread的本机代码,当我调用pthread_create时,我将从JAVA代码中获得的JNIEnv*作为参数传递给线程函数。 JNIEnv*是有效的,使用的所有调用在调用旁边都是成功的 (jclass)i_env->NewGlobalRef(i_env->FindClass(“my/package/com/Myclass”); 返回null 为什么呢 10xs, Nahum是线程特定的。不能从一个线程在另一个线程中使用一个JNIEnv 要获取当前线程的JNIEnv,必须调用JavaVM

我有pthread的本机代码,当我调用pthread_create时,我将从JAVA代码中获得的JNIEnv*作为参数传递给线程函数。 JNIEnv*是有效的,使用的所有调用在调用旁边都是成功的 (jclass)i_env->NewGlobalRef(i_env->FindClass(“my/package/com/Myclass”); 返回null

为什么呢

10xs,
Nahum是线程特定的。不能从一个线程在另一个线程中使用一个JNIEnv

要获取当前线程的JNIEnv,必须调用JavaVM对象的AttachCurrentThread。请在这里阅读:


要获取JavaVM对象,请使用JNI_OnLoad函数:

我调用JNI_OnLoad保存JavaVM*的副本,然后AttachCurrentThread,但NewGlobalRef仍然返回0