2023-01-20 323
有人可以告诉我如何从目标C调用Java方法.
更详细地说,这实际上是我想做的
1)从Java侧首次致电到目标C.在此通话中,我想获得对Java对象的引用.
2)稍后,我希望目标C使用上一步中使用的引用来调用Java方法.
谢谢
以下内容似乎有效.它基于上述评论,以下C示例和此链接.
正如链接所说的那样,不要为env创建全局变量而是创建JVM的全局变量,也可以创建对您类的全局引用.
这是我实现步骤1的方式:
”
1)从Java一侧进行了首次调用到目标C.在此通话中,我想获得对Java对象的引用.
”
的标题文件中首次声明全局变量
1)JVM:
JavaVM *jvm;
2)Java类:
jclass smartCallbackClass;
3)Java对象:
jobject smartCallbackObject;
从Java侧到目标C的呼叫中的下一个设置这些变量的值
1)对于JVM:
(*env)->GetJavaVM(env, &jvm);
2)对于对象:
smartCallbackObject = (*env)->NewGlobalRef(env, obj);
3)对于课程:
if (smartCallbackClass == NULL) {
jclass localRefCls = (*env)->FindClass(env,"com/studyisland/nativelibs/smart/responsesdk/interfaces/thin/SMARTResponseThinClient");
if (localRefCls == NULL) {
NSLog(@"Unable to create a JNI Java Class reference \n");
}
//Create a global reference for JNI Java class
smartCallbackClass = (*env)->NewGlobalRef(env,localRefCls);
//Delete the local reference as it is no longer needed
(*env)->DeleteLocalRef(env, localRefCls);
//Is the global reference created successfully?
if (smartCallbackClass == NULL) {
NSLog(@"Unable to create JNI Java class reference \n");
return 0;
}
}
这是我获得类代码
的链接
现在第二步
”
2)稍后,我希望目标C使用上一步中使用的引用来调用Java方法
”
要从目标C回到Java,您需要确保呼叫是在Java称为目标C的同一线程上完成的,因此,这是代码.
-(void)classFailedToStop:(SMARTResponseCallBackEventArg*)anArg{
JNIEnv *env;
int attach = (*jvm)->AttachCurrentThread(jvm, (void**)&env, NULL);
if(attach == 0){
(*jvm)->GetEnv(jvm, (void**)&env, JNI_VERSION_1_4);
jmethodID method = (*env)->GetMethodID(env, smartCallbackClass, "callback_onStopClassFailed", "()V");
(*env)->CallVoidMethod(env, smartCallbackObject, method);
}
(*jvm)->DetachCurrentThread(jvm);
}
以上所述是小编给大家介绍的目标C使用JNI调用Java方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/25942.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态