JNI中访问JList的代码

简介: JNI中访问JList的代码

思路就是,这是一个对象,获取其中的函数后,使用for循环调用函数获取其中的数据。


代码如下:

#include <jni.h>
void process_jlist(const JNIEnv *env, const jobject jlist)
{
  if (env == NULL || jlist == NULL)
  {
    return;
  }
  jclass list_cls = env->GetObjectClass(jlist);
  if (list_cls == NULL)
  {
    return;
  }
  jmethodID list_get  = env->GetMethodID(list_cls, "get",  "(I)Ljava/lang/Object;");
  jmethodID list_size = env->GetMethodID(list_cls, "size", "()I");
  int len = static_cast<int>(env->CallIntMethod(jlist, list_size));
  if (len == 0)
  {
     return;
  }
  for (int i=0; i < len; i++)
  {
    jstring element = (jstring)(env->CallObjectMethod(jlist, list_get, i));
    if (element == NULL)
    {
       continue;
    }
    // 注意是否有其他的内存泄露
    env->DeleteLocalRef(element);
  }
  //做点其他事情
}


目录
相关文章
|
8月前
|
Java API Android开发
Java通过JNI调用C++的DLL库
Java通过JNI调用C++的DLL库
51 0
|
9月前
|
缓存 Java API
[NDK/JNI系列05] JNI引用API
[NDK/JNI系列05] JNI引用API
76 0
|
Java
JNI访问属性和方法
NDK连载系列
110 0
|
缓存 安全 Java
JNI之缓存与引用
NDK连载系列
83 0
|
Java
JNI学习(3)——运行基于JNI的java程序
JNI学习(3)——运行基于JNI的java程序
108 0
JNI学习(3)——运行基于JNI的java程序
|
Java
JAVA中,如果发现一个值起作用,却又没找到哪里使用,检查一下是否有native/JNI中反射
JAVA中,如果发现一个值起作用,却又没找到哪里使用,检查一下是否有native/JNI中反射
92 0
|
Java Linux C++
使用JNI加载JAVA虚拟机
使用JNI加载JAVA虚拟机
127 0
|
Java Android开发 C++
【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )(一)
【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )(一)
560 0
【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )(一)
|
编译器 API C++
C++通过LoadLibrary的方式调用C封装的dll
C++通过LoadLibrary的方式调用C封装的dll
923 0
C++通过LoadLibrary的方式调用C封装的dll
|
Java Android开发 C++
【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )(二)
【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )(二)
496 0