天天看点

Android NDK开发系列教程3:基本方法调用及传参(续)

上一节主要讲解Java向native传参,下面主要讲解从native传相应的数据到java层。

接着上一节,下面主要讲解内容如下:

1. native向java返回字符串类型

2. native向java返回java对象

3. native向java返回数组类型

4. native向Java返回List对象

对于上面的每个都给出对应的例子。

本节所有案例代码均已放到GitHub上,欢迎下载:

<a href="https://github.com/huangtianyu/JNILearnCourse">https://github.com/huangtianyu/JNILearnCourse</a>

传基本数据类型很简单,是什么就传什么就行。传字符串类型也很简单,具体jni代码如下:

其中最主要用的是以下几个方法:

以上是处理字符串常用的一些方法。

具体看native的代码如下:

常用新建Object的方法由以下几个:

这里直接看native层代码如下:

基本数据类型数组都有相应的env-&gt;NewXXXArray(jsize length);通过该方法可以生成对应的数组。

在生成了对应的数组后,可以通过setXXXArrayRegion(jxxxArray array, jsize start, jsize len, const jchar* buf)来填充数组

直接看native代码:

其在native生成的方法是<code>jobjectArray joa = env-&gt;NewObjectArray(len, cls, obj);</code>

直接看native代码如下:

对应jni而言,List,ArrayList以及Map,HashMap,Set,HashSet都只是一个Object,对应于jni而言也就都是jobject,操作jobject都可以用最开始介绍的方法。

继续阅读