Android Jni遇到的常见异常和解决办法
程序员文章站
2022-11-11 11:53:03
android jni遇到的常见异常和解决办法
local reference table overflow (max=512)
当使用了大量的局部引用而没有及时释放的话,就可能出现局部引用表溢出,...
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); }
上一篇: 春季养生保健七个常识 保肝排毒最重要
下一篇: 秋季养生保健 10妙招预防秋季病