在创建时调用JNI方法对象

时间:2016-07-20 16:16:34

标签: java android c java-native-interface

使用JNI我存储了对Java方法对象(obj)的引用,以便稍后从C调用它:

 jobject obj = (*newEnv)->NewObject(newEnv, cls, mid);

newEnv是我的环境,cls是我的班级ID,mid是我的方法ID。

一切正常,但是在创建此对象以便稍后用作参考时,它实际上会立即调用该方法。

我想稍后创建对象,而不是立即调用该方法。

1 个答案:

答案 0 :(得分:0)

感谢Gabe Sechan的评论,我能够弄清楚:

jmethodID construct = (*newEnv)->GetMethodID(newEnv,cls,"<init>","()V");
jobject obj = (*newEnv)->NewObject(newEnv, cls, construct);

然后我可以调用我想要的方法:

(*newEnv)->CallVoidMethod(newEnv, obj, mid);