美文网首页
JNI调用Java过程中遇到的问题

JNI调用Java过程中遇到的问题

作者: 3ea674b99165 | 来源:发表于2018-01-24 16:45 被阅读0次

只是为了记录JNI开发中的点击。

JNI调用Java方法这里就不介绍了,贴一个比较好的文章,写的比较全面的。

这里主要是记录自己遇到的一个,也许正巧刚接触JNI调用Java的你,正好也遇到了。YY一下,不介意吧。

1.慎用Get|ReleasePrimitiveArrayCritical(),建议使用Get|ReleaseByteArrayElements

在Get和 Release周期之间, 不允许阻塞调用(blocking calls)。导致最直接的影响就是,无法调用CallVoidMethod。

2.多线程问题

获取JavaVM *g_jvm , jobject g_obj

JNIEXPORT jint JNICALL Java_xx_Xx(JNIEnv *env,jobject thiz){

    env->GetJavaVM(&g_jvm);

    g_obj = env->NewGlobalRef(thiz);

}

pthread中方法 调用Java需按照如下处理

JNIEnv * env;

if (g_jvm->AttachCurrentThread(&env, NULL) == JNI_OK) {

    jclass clazz = env->FindClass("XXX");

    jmethodID methodId = env->GetMethodID(clazz, "methodName", "(II)V");

    env->CallVoidMethod(g_obj, methodId ,1,1);

    env->ExceptionClear();

    g_jvm->DetachCurrentThread();

}

相关文章

  • JNI调用Java过程中遇到的问题

    只是为了记录JNI开发中的点击。 JNI调用Java方法这里就不介绍了,贴一个比较好的文章,写的比较全面的。 这里...

  • JNI的引用问题

    问题 1.Java调用JNI的效率比Java调用java的效率要低很多(这个可以去测试对比下),而且JNI中的fi...

  • JNI介绍

    1 JNI定义 JNI(Java Native Interface),即Java本地接口,JNI是Java调用Na...

  • 进击的NDK05-JNI开发及其数据类型和方法

    什么是JNI? JNI(Java Native Interface) Java调用 c/c++,c/c++调用Ja...

  • Android JNI学习手册

    一、JNI基础学习-JNI调用java原生方法 JNI调用java原生方法有四个重要的东西 一、class 类信息...

  • JNI

    JNI: Java Native Interface ;Java本地调用 JNI功能: 可以实现Java函数和Na...

  • 四、MagicCamera3#C++与Kotlin之间的衔接

    NDK和JNI JNI是Java Native Interface(JAVA本地接口)的缩写,为了方便Java调用...

  • Java JNI使用

    什么是JNI? JNI是Java Native Interface的缩写,通过JNI,使得java调用c的函数成为...

  • JNI学习总结(基础篇)

    基本概念 JNI JNI(Java Native Interface),Java本地接口,是为方便java调用C或...

  • JNI 开发流程

    什么是JNI JNI (Java Native Interface) 是 Java 调用c/c++ ,c/c++...

网友评论

      本文标题:JNI调用Java过程中遇到的问题

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