1、JNI中也可以获取Java数组的Size:
env->GetArrayLength(jarray array);
2、普通的native方法中,产生的jni对象都是属于局部引用(local reference),在native方法中超出作用域就会自动析构,所以不用专门释放(只针对jni对象)。除非在C++中使用了static定义了全局引用。那需要用ReleaseGolbalRef来进行释放。
3、不管是返回数组或对象,只要将这个返回的对象构造出来并赋了想要的值并返回就行了,对该对象本身不要释放。其它的临时jni对象需要释放掉。
如果是返回数组,可以使用(*jniEnv)->ReleaseByteArrayElements(ByteArray arr, byte* array, jint mode); 来更新返回的数组的同时,释放本地的C++数组。(这里的mode要设为0,表示对java数组更新并释放C++数组)。
具体怎么做请你们自己调查下。
数组的操作可以参考这个贴子:
http://blog.csdn.net/jiangwei0910410003/article/details/17653803
分享到:
相关推荐
Android C、Java、JNI效率测试结果分析 Android 操作系统中,效率测试是一个非常重要的方面,特别是在使用 JNI(Java Native Interface)调用 C 语言时。这个文档描述了 Android G1 环境中,C、Java、JNI 调用(C ...
JNI,全称Java Native Interface,是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在很多场景下非常有用,比如当需要利用已有的C或C++库,或者提升性能时,我们可以通过JNI将Java代码与本地...
在这个“jni相关书籍资料”的压缩包中,包含了多本关于JNI学习和实践的PDF文档,可能是从网上搜集的资源。 第一本书籍“05134745605.pdf”可能详细介绍了JNI的基础概念,包括如何在Java代码中声明本地方法,创建...
描述中提到的"包含文件 jni.pas JNI_MD.INC",`JNI_MD.INC`是一个平台特定的包含文件,可能包含了与特定操作系统相关的定义,例如指针大小、数据对齐等。这个文件对于确保在不同平台上正确编译和链接JNI代码至关重要...
在本示例中,你可能有一个名为`testndk`的目录,这通常包含了与JNI相关的源代码。在JNI中,你需要创建一个`JNIEXPORT`修饰的函数,这些函数可以在Java层被调用。例如,创建一个名为`nativeSendMessage`的函数: ```...
`jni_md.h`则是一个平台相关的头文件,它根据不同的操作系统和处理器架构提供具体的实现细节。例如,在32位和64位系统上,数据类型的大小和内存对齐方式可能会有所不同,`jni_md.h`会根据具体平台进行调整。这个文件...
JNI.h头文件是JNI编程的核心,包含了所有JNI相关的函数声明、类型定义以及常量,它是编写C/C++本地方法时必须包含的头文件。 `jni.h`头文件主要包括以下几个方面: 1. **JNI数据类型**:定义了一系列用于在Java和...
在本项目“JNI压力计效果实现”中,我们利用JNI技术来创建一个模拟气压表盘的效果,使得表针能够根据所测量的压力值动态转动,从而直观地展示压力的变化。 首先,我们需要了解JNI的基本概念。JNI是一个接口,它提供...
本篇将深入探讨三个JNI技术相关的Demo,涵盖Java调用C/C++,C/C++调用Java以及JNI中的数据类型转换和访问。 1. **Java调用C/C++**: 在这个Demo中,Java代码通过JNI接口来调用C或C++函数。首先,你需要在Java类中...
JNI,全称Java Native Interface,是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在很多场景下非常有用,比如当需要利用已有的C/C++库或者优化性能时。本篇文章将深入探讨如何在JNI中传递...
在Android开发中,JNI(Java Native Interface)是一个关键的技术,它允许Java代码和其他语言写的代码进行交互。JNI在很多场景下都非常有用,比如优化性能、使用现有的C/C++库、或者像在这个“JniCallback.zip”文件...
JNI,全称Java Native Interface,是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在很多场景下都是必要的,比如当Java需要调用已有的C/C++库,或者想要利用硬件特性,或者优化性能时。这篇...
JNI,全称Java Native Interface,是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在很多场景下都是必要的,...学习和理解JNI及其相关头文件,对于进行Java和本地代码集成的开发工作至关重要。
在本篇Android JNI实战教程中,我们将探讨如何利用JNI(Java Native Interface)技术来实现一个温控计应用。JNI是Java平台提供的一种机制,允许Java代码与其他编程语言(如C和C++)进行交互,从而扩展Java应用的功能...
在Android开发中,Java Native Interface (JNI) 是一个关键的工具,它允许Java代码与本地C/C++代码交互。JNI的使用场景广泛,包括优化性能、利用硬件特性、调用已有的C/C++库等。当涉及到Android调用JNI并返回自定义...
JNI,全称Java Native Interface,是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在很多场景下都是必要的,比如调用操作系统API、优化性能关键部分或者利用已有的C/C++库。本DEMO将向你...
本篇文章将深入探讨在Java与C++之间通过JNI实现的完美结合,并提供相关的测试代码实例。 首先,理解JNI的基本概念至关重要。JNI接口定义了一组函数,这些函数使得Java虚拟机(JVM)可以调用本地方法,即非Java编写...
JNI,全称Java Native Interface,是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在很多场合都发挥了关键作用,比如调用操作系统API、接入硬件设备、优化性能敏感的代码段或者利用已有的C/...
Java Native Interface(JNI)是Java平台提供的一种标准方式,允许Java代码和其他语言写的代码进行交互。这个例子展示了如何使用JNI来调用C++代码,在Java环境中执行本地文件的写入操作。下面我们将深入探讨这个过程...
JNI(Java Native Interface)是Java平台的一个重要特性,它允许Java代码和其他语言写的代码进行交互。在Android开发中,JNI通常用于实现性能敏感的代码、调用系统库或者利用已有的C/C++库。本案例将详细介绍如何在...