方法列表说明

方法列表说明

关于static const JNINativeMethod method_table[]方法列表的原型如下:

[cpp] view plaincopy

  1. typedef struct {
  2. const char* name;
  3. const char* signature;
  4. void* fnPtr;
  5. } JNINativeMethod;

Andoird 中使用了一种不同传统Java JNI的方式来定义其native的函数。其中很重要的区别是Andorid使用了一种Java 和 C 函数的映射表数组,并在其中描述了函数的参数和返回值。这个数组的类型就是JNINativeMethod,见上述定义.

第一个变量name是Java中函数的名字。第二个变量signature,用字符串是描述了函数的参数和返回值.第三个变量fnPtr是函数指针,指向C函数。

其中比较难以理解的是第二个参数,例如:

"()V"

"(II)V"

"(Ljava/lang/String;Ljava/lang/String;)V"

实际上这些字符是与函数的参数类型一一对应的。

"()" 中的字符表示参数,后面的则代表返回值。例如"()V" 就表示void Func();

"(II)V" 表示 void Func(int, int);

具体的每一个字符的对应关系如下
字符 Java类型    C类型

V      void              void
Z       jboolean     boolean
I        jint                int
J       jlong            long
D      jdouble       double
F      jfloat            float
B      jbyte            byte
C      jchar           char
S      jshort          short

数组则以"["开始,用两个字符表示

[I       jintArray      int[]
[F     jfloatArray    float[]
[B     jbyteArray    byte[]
[C    jcharArray    char[]
[S    jshortArray   short[]
[D    jdoubleArray double[]
[J     jlongArray     long[]
[Z    jbooleanArray boolean[]

上面的都是基本类型。如果Java函数的参数是class,则以"L"开头,以";"结尾.中间是用"/" 隔开的包及类名。而其对应的C函数名的参数则为jobject. 一个例外是String类,其对应的类为jstring

Ljava/lang/String;   String jstring
Ljava/net/Socket;   Socket jobject

如果JAVA函数位于一个嵌入类,则用$作为类名间的分隔符。

例如 "(Ljava/lang/String;Landroid/os/FileUtils$FileStatus;)Z"

时间: 2024-11-07 16:20:00

方法列表说明的相关文章

jQuery学习笔记--JqGrid相关操作 方法列表(上)

1.获得当前列表行数:$("#gridid").getGridParam("reccount"); 2.获取选中行数据(json):$("#gridid").jqGrid('getRowData', id); 3.刷新列表:$(refreshSelector).jqGrid('setGridParam', { url: ''), postData: ''}).trigger('reloadGrid'); 4.选中行:$("#jqGrid

C#获取当前堆栈的各调用方法列表

在使用.NET编写的代码在debug时很容易进行排查和定位问题,一旦项目上线并出现问题的话那么只能依靠系统日志来进行问题排查和定位,但当项目复杂时,即各种方法间相互调用将导致要获取具体的出错方法或调用者将是一件不那么容易的事(因为没有PDB文件) 还好.NET提供了一系列系统组件来帮助我们获取项目堆栈信息用于定位和排查,以下代码将返回出错堆栈调用的各上一级方法,直到最终的调用者方法 /********************************************************

JqGrid相关操作备忘 方法列表

JqGrid相关操作备忘 方法列表 1.获得当前列表行数:$("#gridid").getGridParam("reccount"); 2.获取选中行数据(json):$("#gridid").jqGrid('getRowData', id); 3.刷新列表:$(refreshSelector).jqGrid('setGridParam', { url: ''), postData: ''}).trigger('reloadGrid'); 4.选

[五] JavaIO之InputStream OutputStream简介 方法列表说明

InputStream 和 OutputStream 对于字节流的输入和输出 是作为协议的存在 所以有必要了解下这两个类提供出来的基本约定 这两个类是抽象类,而且基本上没什么实现,都是依赖于子类具体的去实现 但是他是对于其子类 协议纲领一般的存在 了解清楚每一个方法含义,对于后续具体的子类将会有非常大的帮助 基本含义 InputStream 所有字节输入流的 超类 他是一个抽象类 OutputStream 所有字节输出流的 超类 他是一个抽象类 方法列表 InputStream  包含了读取方法

python之ActionChains方法列表

使用方法: 方法列表: click(on_element=None) --单击鼠标左键 click_and_hold(on_element=None) --点击鼠标左键,不松开 context_click(on_element=None) --点击鼠标右键 double_click(on_element=None) --双击鼠标左键 drag_and_drop(source, target) --拖拽到某个元素然后松开 drag_and_drop_by_offset(source, xoffse

python对象特殊方法列表

名称(省略双划线) 说明 call 为实例添加调用方法,如实例x是Class C的实例,则调用x()时会调用Class的call方法 cmp 比较方法 del 垃圾回收之前会调用,开发的时候要小心使用这个方法,因为这个方法可能会引起不会进行GC delattr 当要求解除绑定关系时,会调用这个方法 eq ge gt le lt ne x==y x>=y x>y x<y x<=y x<>y getattr x.y的时候调用(当getattribute找到该属性的时候调用)

27 string类中常用的方法列表

1. 获取方法 int length()     获取字符串的长度 char charAt(int index) 获取特定位置的字符 (角标越界) int indexOf(String str) 获取特定字符的位置(overload) int lastIndexOf(int ch) 获取最后一个字符的位置 2. 判断方法 boolean  endsWith(String str) 是否以指定字符结束 boolean  isEmpty() 是否长度为0 如:"" null V1.6 bo

单元测试 全局方法列表

看代码吧 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace P2P.Tests { [TestClass()] public sealed

Exchange2010 SMTP错误码/解决方法列表

错误总表 420 1. Timeout Communication Problem Encountered During Transmission. Thie Is a Novell Groupwise Smtp Error 2. Tcp Read Error 3. Tcp Write Error 在联机时发生通讯中断的问题:Novell GroupWise SMTP服务器的错误讯息 此错误讯息只适用于Novell GroupWise SMTP服务器,在此不多做赘述. N/A 421 1. Se