关于android Could not lock surface问题
2017-11-21 16:45
495 查看
公司最近在做一个项目,基于全志A20系统,属于android低端机
在工业应用当中,经常会使用到io流输出输入。读取开发板上面高低电频
在这里会使用到jni
大家知道,c语言跟java体系不同,jni调用的c语言出错,java层是无法捕获出错信息,也无法消除错误
假设是纯c语言,直接调用exit(0)函数,然后自启,整个过程不会超过0.1秒,但在android中,c语言出错,是不会抛出错误的。
所以网上很多碰到相同问题,如软件跑一段时间突然提示Could not lock surface,然后软件处于假死状态,碰一下就死。但我没见到过真正解决的方案
于是我花了很久时间,通过绝大耐心的调试,找到了我代码内部造成Could not lock surface并且不报任何其他错误的bug。分享给大家,希望对您有帮助
在我的工程中,我需要调用c语言中ioctl这个函数。这个函数的含义我就不在这说了,网上一大把。当我高频率延迟约200毫秒使用该函数,直至某次,
使用该函数之前需要使用的open函数返回值超过1024;该函数会返回错误值-1,logcat马上输出Could not lock surface;程序立即假死。
当然,并非是c函数使用频率导致的问题,而是我的代码架构问题,我在另一个地方写了一个网络connect函数,并且在connect失败时未关闭描述符也就是也就是没有调用close方法。导致描述符被占用而自增
,自增到1024以上,程序即崩溃。
正确的做法是统一管理描述符,将描述符写成静态变量,凡是使用了描述符的地方,先行判断是否大于0,大于则直接close掉。
修改软件过后,再未出现该问题。
表达不清,忘请见谅,总之,出现could not lock surface问题,并且未报java错误,最佳的方法,请检查jni里面c语言是否规范,并调试一下。
在工业应用当中,经常会使用到io流输出输入。读取开发板上面高低电频
在这里会使用到jni
大家知道,c语言跟java体系不同,jni调用的c语言出错,java层是无法捕获出错信息,也无法消除错误
假设是纯c语言,直接调用exit(0)函数,然后自启,整个过程不会超过0.1秒,但在android中,c语言出错,是不会抛出错误的。
所以网上很多碰到相同问题,如软件跑一段时间突然提示Could not lock surface,然后软件处于假死状态,碰一下就死。但我没见到过真正解决的方案
于是我花了很久时间,通过绝大耐心的调试,找到了我代码内部造成Could not lock surface并且不报任何其他错误的bug。分享给大家,希望对您有帮助
在我的工程中,我需要调用c语言中ioctl这个函数。这个函数的含义我就不在这说了,网上一大把。当我高频率延迟约200毫秒使用该函数,直至某次,
使用该函数之前需要使用的open函数返回值超过1024;该函数会返回错误值-1,logcat马上输出Could not lock surface;程序立即假死。
当然,并非是c函数使用频率导致的问题,而是我的代码架构问题,我在另一个地方写了一个网络connect函数,并且在connect失败时未关闭描述符也就是也就是没有调用close方法。导致描述符被占用而自增
,自增到1024以上,程序即崩溃。
正确的做法是统一管理描述符,将描述符写成静态变量,凡是使用了描述符的地方,先行判断是否大于0,大于则直接close掉。
修改软件过后,再未出现该问题。
表达不清,忘请见谅,总之,出现could not lock surface问题,并且未报java错误,最佳的方法,请检查jni里面c语言是否规范,并调试一下。
相关文章推荐
- 关于android 导入jar包出现could not find .classpath的问题
- 关于Ubuntu中Could not get lock /var/lib/dpkg/lock问题解决方法
- 关于android的javaMail中的could not connect to STMP.qq.com的一些问题
- android 模拟器启动 PANIC: could not open .android/avd/XXX.ini 错 关于android sdk path 问题的彻底解
- 关于Could not find make command: mingw32-make.exe in the build environment问题详细解答
- android drawable-(hdpi,mdpi,ldpi)的区别和关于surfaceholder.lockCanvas(rect)方法的疑问
- 启动Android模拟器报 PANIC: Could not open /.android/avd/test.ini 问题解决
- 关于android分支无法下载的问题,revision froyo in manifests not found
- 搭建Android环境的时候遇到 'could not find adb.exe!'的问题
- ubantu下解决 Could not get lock /var/lib/dpkg/lock 问题方法
- 关于android编程中遇到的Could not find class 'com.swetake.util.Qrcode错误的原因及解决办法
- 关于 could not read symbols: File in wrong format 问题的解决方案
- 关于Android的This text field does not specify an inputType or a hint 问题
- 关于配置到dbca输入密码时提示could not validate asmsnmp password ora-12541:no listener的问题
- 关于Android中android.content.res.Resources$NotFoundException: String resource ID #0x9这类问题的解决
- 关于android分支无法下载的问题,revision froyo in manifests not found
- android drawable-(hdpi,mdpi,ldpi)的区别和关于surfaceholder.lockCanvas(rect)方法的疑问
- [Android应用] 问题1:Could not find helloworld.apk
- Android.Could not find *.apk 问题解决
- 配置android虚拟机的中文路径问题: PANIC: Could not open: