日期:2014-05-20 浏览次数:20690 次
Class Test{
public void callback();
public native void func();
}
// 在func()里起了个线程,然后func()退出,现在需要在线程里调用callback()
//我这样测试过:
JavaVM *jvm; //缓存的全局变量
jobject g_obj; //c文件中的全局变量
JNIEXPORT void JNICALL Java_com_xx_cc_func(JNIEnv *env, jobject obj)
{
g_obj = obj;
return;
}
//然后在需要调用callback()的时候使用g_obj这个jobject:
void call()
{
JNIEnv* env;
(*jvm)->GetEnv(jvm, (void**)&env, JNI_VERSION_1_2);
class cls = (*env)->FindClass(env,"com/xx/cc");
jmethodID mid = (*env)->GetStaticMethodID(env, cls, "callback","()V");
(*env)->CallVoidMethod(env, g_obj, mid);
}