【详解】JNI (Java Native Interface) (四)

案例四:回调实例方法与静态方法

描述:此案例将通过Java调用的C语言代码回调Java方法。

要想调用实例对象的方法,需要进行以下步骤:

1. 通过对象实例,获取到对象类的引用  => GetObjectClass()

2. 通过类引用,获取到方法ID  => GetMethodID()

 需要提供方法名,和方法签名。也就是需要这两个信息来标识确定一个方法。

方法签名格式:(参数列表)返回值类型

 例如: ()V或(Ljava/lang/String;)V等等。这里的所说的类型表示与案例三相同

你可以通过javap命令工具,查看方法的签名。例如,以下是下面例子的方法签名(描述)。

【详解】JNI (Java Native Interface) (四)

3. 基于方法ID,你可以根据返回值类型,调用Call<基本类型>Method()或者CallVoidMethod()或CallObjectMethod(),来调用对应的方法。

本例所有生成的文件如下:

【详解】JNI (Java Native Interface) (四)

(一)编写Java代码

【详解】JNI (Java Native Interface) (四)

(二)编译Java代码,并生成头文件

【详解】JNI (Java Native Interface) (四)

【详解】JNI (Java Native Interface) (四)

(3)编写C代码实现

【详解】JNI (Java Native Interface) (四)

(4)编译C代码生成动态链接库,libdemo4.so

【详解】JNI (Java Native Interface) (四)

(5)执行Java代码

【详解】JNI (Java Native Interface) (四)

由此,可知Java回调方法已被正确调用

上一篇:android 读取json数据(遍历JSONObject和JSONArray)(转)


下一篇:Js/jQuery实时监听输入框值变化