1:可以做的是改為緩存JavaVM指針。
static JavaVM *jvm;
[JNICALL etc] void init(JNIENv* env, [etc])
{
jint rs = (*env)->GetJavaVM(env, &jvm);
[assert](http://www.opengroup.org/onlinepubs/009695399/functions/assert.html) (rs == JNI_OK);
}
2:在沒(méi)有給它的上下文中使用JNIEnv指針,請(qǐng)執(zhí)行以下操作:
void someCallback() {
JNIEnv *env;
jint rs = (*jvm)->AttachCurrentThread(jvm, &env, NULL);
[assert](http://www.opengroup.org/onlinepubs/009695399/functions/assert.html) (rs == JNI_OK);
//找到接口類(lèi)
jclass jSdkClass = env->GetObjectClass(myTest);
//找到接口類(lèi)方法,第三個(gè)參數(shù)是方法簽名
jmethodID javaCallback = env->GetMethodID(jSdkClass, "getX", "(Z)V");
//進(jìn)行回調(diào)
env->CallVoidMethod(myTest, javaCallback, true);
}