天天看點

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都可以用最開始介紹的方法。

繼續閱讀