首页 新闻 会员 周边 捐助

android jni GetMethodID 疑惑

0
悬赏园豆:10 [待解决问题]

在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");

}

这两者的区别是什么呢?求详细解答。

buffer_hayes的主页 buffer_hayes | 初学一级 | 园豆:192
提问于:2012-12-18 15:42
< >
分享
所有回答(1)
0

这两个GetMethodID的调用方法明显没区别,区别在于第一个jclass是临时获取,第二个是原来调用过findclass后保存然后这里直接用。

WillingCPP | 园豆:202 (菜鸟二级) | 2013-09-13 16:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册