当前位置: 移动技术网 > IT编程>移动开发>Android > Android Jni遇到的常见异常和解决办法

Android Jni遇到的常见异常和解决办法

2018年11月04日  | 移动技术网IT编程  | 我要评论

1314mv电影网,深圳条码,法法网题库

android jni遇到的常见异常和解决办法

local reference table overflow (max=512)

当使用了大量的局部引用而没有及时释放的话,就可能出现局部引用表溢出,所以变量用完以后回收一下就可以了,需要注意的是参数传的是jobject类型

(*env)->deletelocalref(env, jobject);
input is not valid modified utf-8: illegal start byte 0xa9

当调用(*env)->newstringutf时会出现,是因为传进去的char*不是utf-8,转成utf-8即可;

还有一种方法是转成jbytearray,传到java后再转成string。

c

void test(const char *text) {
 int len = strlen(text);
 if (len > 0) {
  jbytearray text_bytes = (*env)->newbytearray(env, len);
  //将c字符串转成jbytearray
  (*env)->setbytearrayregion(env, text_bytes, 0, len, (jbyte *) text);
  //回调给java
  (*env)->callvoidmethod(env, jobject, "javatest", text_bytes);
  (*env)->deletelocalref(env, text_bytes);
 }
}

java

public void javatest(byte[] textbytearray) {
 string text = new string(textbytearray);
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网