JNI接口函数

来源:互联网 发布:netstat 查看端口 编辑:程序博客网 时间:2024/06/05 07:53

typedef const struct JNINativeInterface *JNIEnv;

const struct JNINativeInterface … = {

NULL, NULL, NULL, NULL, GetVersion,             //获取JNI版本号DefineClass,             //通过指定ClassLoader对象加载类FindClass,             //获取指定的Class类对象FromReflectedMethod,    //通过指定的java.lang.reflect.Method对象获取方法IDFromReflectedField,    //通过指定的java.lang.reflect.Field对象获取字段IDToReflectedMethod,    //通过指定的方法ID获取java.lang.reflect.Method对象GetSuperclass,         //获取指定类的父类IsAssignableFrom,         //判断指定类是否继承自某类或实现了某个接口ToReflectedField,         //通过指定的字段ID获取java.lang.reflect.Field对象Throw,                 //抛出指定的Throwable对象ThrowNew,             //抛出指定的Throwable对象,并制定消息ExceptionOccurred,     //获取未被清空或捕获的异常ExceptionDescribe,     //同printStackTrace()ExceptionClear,         //清除已被抛出的异常FatalError,             //抛出致命错误PushLocalFrame,   //Push/PopLocalFrame函数提供了本地引用管理的简便方法,在该函数对之间的代码段,所有创建的显式本地引用无需手动调用DeleteLocalReference函数释放,PopLocalFrame函数会自动释放这些本地引用PopLocalFrame, NewGlobalRef,         //创建全局引用,必须被显式清除DeleteGlobalRef,         //清除全局引用DeleteLocalRef,         //清除本地引用,通常本地引用在原生代码返回时会自动清除,但是对于大数据,比如在循环中频繁创建Java对象,而该对象的只在一次循环中有效,这种情况下有必要显式调用DeleteLocalRef以通知VM尽快释放该对象。IsSameObject,         //判断是否为同一对象,可通过该方法判断弱引用是否已被释放(NULL)NewLocalRef,             //创建本地引用EnsureLocalCapacity,     //确保当前线程可以创建指定数量的本地引用AllocObject,             //创建一个新的对象,只分配内存,不调用任何构造方法(cdwang:应该是为了方便通过CallNonvirtual<Type>Method方法调用父类的构造函数初始化对象)NewObject,             //通过指定的构造函数创建对象,变长参数形式NewObjectV,             //同上,va_list形式NewObjectA,             //同上,数组形式GetObjectClass,         //获取对象的Class类对象IsInstanceOf,             //同instanceOfGetMethodID,         //获取实例(非静态)方法的IDCallObjectMethod,     //调用实例方法,object表示返回值类型CallObjectMethodV, CallObjectMethodA, CallBooleanMethod, CallBooleanMethodV, CallBooleanMethodA, CallByteMethod, CallByteMethodV, CallByteMethodA, CallCharMethod, CallCharMethodV, CallCharMethodA, CallShortMethod, CallShortMethodV, CallShortMethodA, CallIntMethod, CallIntMethodV, CallIntMethodA, CallLongMethod, CallLongMethodV, CallLongMethodA, CallFloatMethod, CallFloatMethodV, CallFloatMethodA, CallDoubleMethod, CallDoubleMethodV, CallDoubleMethodA, CallVoidMethod, CallVoidMethodV, CallVoidMethodA, CallNonvirtualObjectMethod, //调用非虚实例方法,通过class对象指定调用哪个类的非虚函数(cdwang:应该是某对象不调用自己的构造类的方法实现,而是调用父类的方法实现,这个方法节省了子类对象向父类对象的强制转换)CallNonvirtualObjectMethodV, CallNonvirtualObjectMethodA, CallNonvirtualBooleanMethod, CallNonvirtualBooleanMethodV, CallNonvirtualBooleanMethodA, CallNonvirtualByteMethod, CallNonvirtualByteMethodV, CallNonvirtualByteMethodA, CallNonvirtualCharMethod, CallNonvirtualCharMethodV, CallNonvirtualCharMethodA, CallNonvirtualShortMethod, CallNonvirtualShortMethodV, CallNonvirtualShortMethodA, CallNonvirtualIntMethod, CallNonvirtualIntMethodV, CallNonvirtualIntMethodA, CallNonvirtualLongMethod, CallNonvirtualLongMethodV, CallNonvirtualLongMethodA, CallNonvirtualFloatMethod, CallNonvirtualFloatMethodV, CallNonvirtualFloatMethodA, CallNonvirtualDoubleMethod, CallNonvirtualDoubleMethodV, CallNonvirtualDoubleMethodA, CallNonvirtualVoidMethod, CallNonvirtualVoidMethodV, CallNonvirtualVoidMethodA, GetFieldID,             //获取成员字段IDGetObjectField,         //获取字段值GetBooleanField, GetByteField, GetCharField, GetShortField, GetIntField, GetLongField, GetFloatField, GetDoubleField, SetObjectField,         //设置字段值SetBooleanField, SetByteField, SetCharField, SetShortField, SetIntField, SetLongField, SetFloatField, SetDoubleField, GetStaticMethodID,     //获取静态方法IDCallStaticObjectMethod, //调用静态方法CallStaticObjectMethodV, CallStaticObjectMethodA, CallStaticBooleanMethod, CallStaticBooleanMethodV, CallStaticBooleanMethodA, CallStaticByteMethod, CallStaticByteMethodV, CallStaticByteMethodA, CallStaticCharMethod, CallStaticCharMethodV, CallStaticCharMethodA, CallStaticShortMethod, CallStaticShortMethodV, CallStaticShortMethodA, CallStaticIntMethod, CallStaticIntMethodV, CallStaticIntMethodA, CallStaticLongMethod, CallStaticLongMethodV, CallStaticLongMethodA, CallStaticFloatMethod, CallStaticFloatMethodV, CallStaticFloatMethodA, CallStaticDoubleMethod, CallStaticDoubleMethodV, CallStaticDoubleMethodA, CallStaticVoidMethod, CallStaticVoidMethodV, CallStaticVoidMethodA, GetStaticFieldID,         //获取静态字段IDGetStaticObjectField,     //获取字段值GetStaticBooleanField, GetStaticByteField, GetStaticCharField, GetStaticShortField, GetStaticIntField, GetStaticLongField, GetStaticFloatField, GetStaticDoubleField, SetStaticObjectField,     //设置字段值SetStaticBooleanField, SetStaticByteField, SetStaticCharField, SetStaticShortField, SetStaticIntField, SetStaticLongField, SetStaticFloatField, SetStaticDoubleField, NewString,             //通过指定Unicode格式字符数组构造Java StringGetStringLength,         //获取Unicode字符的长度GetStringChars,         //获取字符数组ReleaseStringChars,     //通知VM可以释放String和由GetStringChars获取的字符数组NewStringUTF,         //通过指定UTF-8格式字符数组构造Java StringGetStringUTFLength, GetStringUTFChars, ReleaseStringUTFChars, GetArrayLength,         //获取数组长度NewObjectArray,         //通过指定的Class类对象和初始元素初始化一个Java对象数组GetObjectArrayElement,    //获取指定索引的对象元素SetObjectArrayElement,    //设置指定索引的对象元素NewBooleanArray,     //构造基本类型的Java数组NewByteArray, NewCharArray, NewShortArray, NewIntArray, NewLongArray, NewFloatArray, NewDoubleArray, GetBooleanArrayElements,    //获取基本类型元素的C数组GetByteArrayElements, GetCharArrayElements, GetShortArrayElements, GetIntArrayElements, GetLongArrayElements, GetFloatArrayElements, GetDoubleArrayElements, ReleaseBooleanArrayElements,    //通知VM可以释放Java数组和由前述方法族获取的C数组ReleaseByteArrayElements, ReleaseCharArrayElements, ReleaseShortArrayElements, ReleaseIntArrayElements, ReleaseLongArrayElements, ReleaseFloatArrayElements, ReleaseDoubleArrayElements, GetBooleanArrayRegion,    //获取子数组GetByteArrayRegion, GetCharArrayRegion, GetShortArrayRegion, GetIntArrayRegion, GetLongArrayRegion, GetFloatArrayRegion, GetDoubleArrayRegion, SetBooleanArrayRegion,    //设置子数组SetByteArrayRegion, SetCharArrayRegion, SetShortArrayRegion, SetIntArrayRegion, SetLongArrayRegion, SetFloatArrayRegion, SetDoubleArrayRegion, RegisterNatives,         //映射原生代码UnregisterNatives, MonitorEnter, MonitorExit, GetJavaVM,             //获取当前线程关联的VMGetStringRegion,        //获取子串GetStringUTFRegion,GetPrimitiveArrayCritical,ReleasePrimitiveArrayCritical,GetStringCritical,        // Get/ReleaseStringCritical必须成对出现,语义和Get/ReleaseStringChars一样,但代码段中不能阻塞当前线程,也不能调用任何其他的JNI函数ReleaseStringCritical,    NewWeakGlobalRef,DeleteWeakGlobalRef,ExceptionCheck,        //判断是否有挂起的异常NewDirectByteBuffer,GetDirectBufferAddress,GetDirectBufferCapacity

};

接口函数:

http://blog.csdn.net/ztp800201/article/details/7351754
http://blog.csdn.net/ztp800201/article/details/7351950
http://blog.csdn.net/ztp800201/article/details/7351957
http://blog.csdn.net/ztp800201/article/details/7351966

转载,如果侵权请通知,将立即删除(仅作资料存储用)

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一岁宝宝多动怎么办 3岁前儿童多动症怎么办 好动症的孩子该怎么办 18个月宝宝腹泻怎么办 8个月小孩发烧怎么办 八个月大宝宝发烧怎么办 8个月宝宝拉稀水怎么办 八个月宝宝38度怎么办 8个月的宝宝发烧怎么办 八个月大的宝宝拉肚子怎么办 9孩子上课坐不住怎么办 3岁宝宝太皮怎么办 4岁的宝宝多动症怎么办 小孩好动注意力不集中怎么办 乐扣加热变形了怎么办 3岁宝宝咳嗽厉害怎么办 六个月婴儿呕奶怎么办 刚出生婴儿呕奶怎么办 宝宝拉颗粒便便怎么办 奶水不够宝宝又不吃奶粉怎么办 一岁突然不吃饭怎么办 母乳不够吃宝宝不吃奶粉怎么办 八个月不吃辅食怎么办 孩子长得太快怎么办 反复发烧到39度怎么办 儿童发烧到39度怎么办 7岁儿童发烧40度怎么办 7岁反复发烧39度怎么办 宝宝烧到39.5度怎么办 3岁儿童发烧39度怎么办 孩子发高烧怎么办39度5 3岁宝宝不吃水果怎么办 2岁宝宝不吃水果怎么办 4岁宝宝不吃水果怎么办 过早竖抱婴儿了怎么办 3个月宝宝认生怎么办 10天婴儿不拉屎怎么办 3个月宝宝不吃奶粉怎么办 婴儿吃青菜吃多怎么办 2月宝宝消化不好怎么办 吃母乳的宝宝便秘怎么办