using JNI after critical ... in call to GetObjectClass 崩溃

搞了半天终于知道原因了,jni项目的c++代码中使用了env->GetPrimitiveArrayCritical(imgSrc, 0);方法,那么在这句之后就不能再调用env相关的其他接口了,调用后就会闪退,当然google后发现可能是特殊的设备造成的,其中的原因不清楚需要看底层的源码,不过既然碰到了以后就慎用了。

我的程序查了下没有这样调用。后来发现在某个jni的接口中调用了 env->GetPrimitiveArrayCritical接口,之后调用了其他自定义函数,函数里又有回调,回调函数中又调用了 env->GetObjectClass, 所以造成了崩溃。
两块代码中间隔的比较远,经过了回调,但是还是在同一个线程,不太容易发现。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 0.要素1.类操作2.异常操作3.全局及局部引用4.对象操作5.字符串操作6.数组操作7.访问对象的属性和方法7....
    MagicalGuy阅读 1,374评论 0 2
  • 写在开头:本文参考了Android-JNI开发系列[https://www.jianshu.com/nb/4967...
    梧叶已秋声阅读 268评论 0 0
  • JNI重新认识 头文件: 1.头文件中存放的是对某个库中所定义的函数、宏(define)、类型、全局变量等进行声明...
    ziliuyue阅读 905评论 1 8
  • JNI代码实践 [TOC] 说明 关于jni代码的cmake构建脚本,kotlin如何声明和使用native方法,...
    云佾风徽阅读 2,329评论 0 1
  • 花了几天时间研究了下JNI,基本上知道如何使用了。照我的观点JNI还是不难的,难得只是我们一份尝试的心。 学习过程...
    皇小弟阅读 1,653评论 0 1