在android 的源码中, 可以看到有两种方式获得GetMethodID:
方法一:
先findClass, 获取jclass对象,
jclass jniCallbackClass =
env->FindClass("com/android/bluetooth/btservice/JniCallbacks");
再根据这个这个jclass来获取java代码的methodID
jmethodID method_stateChangeCallback = env->GetMethodID(jniCallbackClass, "stateChangeCallback", "(I)V");
方法二:
直接通过参数的jclass对象来获取,
static void classInitNative(JNIEnv* env, jclass clazz) {
jmethodID method_onAppRegistrationState = env->GetMethodID(clazz, "onAppRegistrationState", "(II)V");
}
这两者的区别是什么呢?求详细解答。
这两个GetMethodID的调用方法明显没区别,区别在于第一个jclass是临时获取,第二个是原来调用过findclass后保存然后这里直接用。