您当前的位置: 首页 > 

命运之手

暂无认证

  • 0浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【NDK】【022】JNI DETECTED ERROR IN APPLICATION: use of deleted local reference

命运之手 发布时间:2021-07-03 10:24:31 ,浏览量:0

错误原因

通过JNIEnv创建的jobject,大多是局部变量,出了函数作用域后,就不能再被使用了

所以一定要将这些变量转为全局变量,再传给外部指针或引用,并且用完要释放

正确代码


	//char数组转jstring
	void toString(const char *charArray, jstring &string) {
	    JNIEnv *env = nullptr;
	    bool detached = JNI::jvm->GetEnv((void **) &env, JNI_VERSION_1_6) == JNI_EDETACHED;
	    if (detached) JNI::jvm->AttachCurrentThread(&env, nullptr);
	    jstring localString = env->NewStringUTF(charArray);
	    string = (jstring) env->NewGlobalRef(localString);
	    if (detached) JNI::jvm->DetachCurrentThread();
	}

	//调用方法
	jstring string = nullptr;
	toString(charArray, string);
	//使用
	env->CallVoidMethod(interface, onErrorMethod, code, string);
	//释放
	env->DeleteGlobalRef(string);
	string = nullptr;

关注
打赏
1654938663
查看更多评论
立即登录/注册

微信扫码登录

0.0384s