美文网首页
JNI 中操作Activity 中的数组(笔记)

JNI 中操作Activity 中的数组(笔记)

作者: 红鲤鱼与绿鲤鱼与驴与鱼 | 来源:发表于2023-11-20 22:03 被阅读0次
#include <jni.h>
#include "logTool.h"
#include <cstdlib>

//函数指针 int (*__comparator)(const void* __lhs, const void* __rhs)
jint compare(const jint *a, const jint *b) {
//    const int *a1 = static_cast<const int *>(a);
//    const int *b1 = static_cast<const int *>(b);
    LOGE("a1:%d, b1:%p",*a,&b);//*a 取值, &b取地址
    return *a - *b;
}

//表态注册
extern "C"
JNIEXPORT void JNICALL
Java_cn_ztx_kotlindemo2_MainActivity_sort(JNIEnv *env, jobject thiz, jintArray arr) {
    jint *pInt = env->GetIntArrayElements(arr, nullptr);
    jsize size = env->GetArrayLength(arr);
//(void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));

    //排序操作,此方法在 stdlib.h 中
    qsort(pInt, size, sizeof(int), reinterpret_cast<int (*)(const void *, const void *)>(compare));
    
     /**
     * 0:           刷新Java层,并释放 C++ 数组
     * JNI_COMMIT:  只提交,只刷新Java层,不释放C++ 数组
     * JNI_ABORT:   只释放C++ 数组
     */
    env->ReleaseIntArrayElements(arr,pInt,0);
}

必须使用 env->ReleaseIntArrayElements 方法来刷新Java层的数组,并且释放C++的数组

相关文章

  • 3-ndk学习之jni基础篇(3)

    jni多线程操作 这里的效果是在jni中开启子线程,然后在子线程直接调用Activity的方法jni中,jvm是跨...

  • Android JNI 笔记 | int类型数组操作 |

    JNI 中需要操作一个数组,但这个数组是在Java中声明的,怎么实现呢?  需要进行操作的数组:  Java 类中...

  • JNI 操作 java 数组

    在 jni 函数中对 java 数组的操作主要包含以下几类: GetArrayLength(jarray arra...

  • NDK学习之JNI基本数据类型和数组传输

    这篇文章主要学习的是在JNI中关于基本数据类型和数组的一系列操作。 关于数组的操作 操作 Java 传递过来的对象...

  • java调用本地方法--JNI访问对象型数组

    本篇结构: 简介 实例 一、简介 补充JNI对象数组访问实例。 JNI 中的数组分为基本类型数组和对象数组,它们的...

  • JNI 访问数组

    JNI 中的数组分为基本类型数组和对象数组,它们的处理方式是不一样的,基本类型数组中的所有元素都是 JNI 的基本...

  • Android JNI 数组操作

    JNI 中有两种数组操作,基础数据类型数组和对象数组,JNI 对待基础数据类型数组和对象数组是不一样的。 基本数据...

  • JNI数组操作

    在JNI中,java的基本数据类型可以直接与jni基本类型映射,但数组作为引用类型不能直接使用和修改,JNI提供了...

  • Android JNI 之 Bitmap 操作

    在 Android 中通过 JNI 去操作 Bitmap。 在 Android 通过 JNI 去调用 Bitmap...

  • jni中对于类对象的传递

    前言 jni部分系列文章 jni基本数据类型的传递 jni 中较为复杂的数据类型(String和数组) 这篇博客承...

网友评论

      本文标题:JNI 中操作Activity 中的数组(笔记)

      本文链接:https://www.haomeiwen.com/subject/litbwdtx.html