美文网首页
JIN jobject全局变量

JIN jobject全局变量

作者: 海内灬存知己 | 来源:发表于2022-11-25 21:36 被阅读0次

1:NewGlobalRef

extern "C"
JNIEXPORT jboolean JNICALL
Java_com_wkq_jnidemo_JniUtil_HancNetInit(JNIEnv *env, jclass clazz, jobject test) {
    env->GetJavaVM(&jvm);
    myTest = (jobject) env->NewGlobalRef(test);
    back();
    return HancNetSDK_Init();
}

2:GetObjectClass

jobject myTest;
static JavaVM *jvm;
void back() {
    JNIEnv *env;
    jvm->AttachCurrentThread(&env, NULL);
    //找到接口类
    jclass jSdkClass = env->GetObjectClass(myTest);
    //找到接口类方法,第三个参数是方法签名
    jmethodID javaCallback = env->GetMethodID(jSdkClass, "getX", "(Z)V");
    //进行回调
    env->CallVoidMethod(myTest, javaCallback, true);
}

3:最后注意方法前后顺序,被调用者代码一定在上面

jobject myTest;
static JavaVM *jvm;

void back() {
    JNIEnv *env;
    jvm->AttachCurrentThread(&env, NULL);
    //找到接口类
    jclass jSdkClass = env->GetObjectClass(myTest);
    //找到接口类方法,第三个参数是方法签名
    jmethodID javaCallback = env->GetMethodID(jSdkClass, "getX", "(Z)V");
    //进行回调
    env->CallVoidMethod(myTest, javaCallback, true);
}


extern "C"
JNIEXPORT jboolean JNICALL
Java_com_wkq_jnidemo_JniUtil_HancNetInit(JNIEnv *env, jclass clazz, jobject test) {
    env->GetJavaVM(&jvm);
    myTest = (jobject) env->NewGlobalRef(test);
    back();
    return HancNetSDK_Init();
}

相关文章

网友评论

      本文标题:JIN jobject全局变量

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