1
我有一個本地方法調用Java函數來創建位圖,然後以int數組的形式返回位圖數據。將本地int []轉換爲jintarray
該方法效率不高,因爲我需要創建一個位圖,然後是IntBuffer來複制位圖數據,然後本地方法創建一個新的int數組來存儲數據。 IntBuffer然後被回收(Bitmap對象可以被重用),並且當我創建超過10個位圖時,垃圾回收器開始減慢應用程序。
我可以在JNI中創建int數組,將它包裝到一個jintarray中並直接在Java中使用它?
'int []'被映射到JNI中的'jintArray',沒有什麼特別的,我們需要做的。 – 2013-03-11 13:23:51
是且不,Java int []是JNI中的jintArray,但是本地(C++)int []不是。 – 2013-03-11 13:29:16
啊,你應該清楚地說你正在談論一個C++'int []'。我們可以通過調用'GetIntArrayElements()'從'jintArray'獲得一個。但是,如果你想以相反的方式,'NewDirectByteBuffer()'確實是你正在尋找的東西。 – 2013-03-11 13:31:34