if (g_VM->AttachCurrentThread(&env, NULL) != 0) {
return ;
}
needDetach = JNI_TRUE;
********************************
if(needDetach) {
g_VM->DetachCurrentThre();
}
如上,如果在***************中使用env->findClass()会失败。
解决方案:
在主线程中先进行env->findClass(“*****”)操作,再执行env->AllocObject(**)操作,生成jobject A对象.
在主线程方法中创建全局引用 :
jobject B=env->NewGlobalRef(A);
然后在******************中添加:
jclass B_class=env->GetObjectClass(B)
jfieldID bb_name=env->GetFieldID(B_class,"name","Ljava/lang/String;");
env->SetObjectField(B, bb_name,env->NewStringUTF("****") );
JAVA回调方法返回(jobject obj, jmethodID methodID,B);
env->DeleteLocalRef(B_class);