13_C语言回调java静态方法-12
C语言调用下面静态方法.
public static void sayHello(String text) {
System.out.println("MainActivity:showText: " + text);
}
Java语言代码JNI类中
//C调用Java的静态方法
public static void hello(){
System.out.println(" static method from callback C");
}
/**
* 作用是:让C代码调用Java中代码JNI.java中的hello()静态方法
*/
public native void callbackHello();
C语言代码:
/**
* C代码调用Java中的jni类的hello方法
*/
JNIEXPORT void JNICALL Java_com_atguigu_callbackjavamethod_JNI_callbackHello
(JNIEnv *env, jobject obj){
//1.得到类的字节码
jclass clazz= (*env)->FindClass(env,"com/atguigu/callbackjavamethod/JNI");
//2.得到对应的静态方法
// jmethodID (*GetStaticMethodID)(JNIEnv*, jclass, const char*, const char*);
jmethodID methodID = (*env)->GetStaticMethodID(env,clazz,"hello","()V");
//3.执行方法 void (*CallStaticVoidMethod)(JNIEnv*, jclass, jmethodID, ...);
(*env)->CallStaticVoidMethod(env,clazz,methodID);
}
本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。