JNI学习(3)(我是菜鸟)-jstring介绍

来源:互联网 发布:idea设置网络 编辑:程序博客网 时间:2024/06/06 07:52

所有内容为记录学习过程,不是大牛敬请谅解。所有分析都参考深入理解Android 卷一

Java中的String 也是引用类型,不过由于它的使用频率有点高,所以再JNI 规范中,单独创建了一个 jstring 类型表示java中的String类型,虽然jstring 是一种独立的数据类型,但是它并没有提供成员函数以便操作,而C++中的string 类有自己的成员哈数,那么操作jstring的过程,不用多说应该是保存在那个JNIEnv中了。

以下介绍几个jstring的函数

1,调用JNIEnvNewString(JNIEnv *env,const jchar *unicodeChars,jsize len),可以从Native的字符串中得到一个jstring对象,其实可以把这个jstring对象看成java中的String对象在JNI层的代表,也就是说jstring就是一个Java String。但是由于java String存储的是Unicode字符串,所以NewString函数的参数也必须是Unicode字符串

调用JNIEnv NewStringUTF将根据Native的一个UTF-8字符串得到一个jstring对象。

上面两个函数将本地字符转换成了javaString对象,JNIEnv还提供了GetStringChars加盟手机进而GetStromgUFTChars函数,他们可以将JavaString对象转换成本地字符串,其中GetStringChars得到一个Unicode字符串,GetStringUTFChars的到一个UTF-8字符串。

如果调用了上面几个函数,做完相关工作后,就需要调用ReleaseStringChars函数,或者ReleaseStringUTFChars 函数来对应的释放资源,否则可能会导致JNI内存泄露。这个问题需要特别注意


来个示例


原创粉丝点击