众所周知JNIEnv env 是一个线程对应一个env,线程间不可以共享同一个env变量。那么如何在新创建的线程中使用env变量呢?
1、JavaVM *g_vm;
env->GetJavaVM(&g_vm); //来获取JavaVM指针.获取了这个指针后,将该JavaVM保存起来。(env是当前线程中对应的变量)
2、在新线程中调用
JNIEnv *env_new;
// attach to JavaVM
vm->AttachCurrentThread(&env_new, NULL)
3、之后在新的线程中就可以使用env_new了,可以调用java接口或者是调用JNIEnv 中的方法了。
4、新的线程结束前记得调用g_vm->DetachCurrentThread();