Board logo

标题: 自定义3G开关耗时问题 [打印本页]

作者: look_w    时间: 2017-10-25 00:15     标题: 自定义3G开关耗时问题

工作需要,移植过好几款3G,其实就3G本身而言;移植的难度不大,底层无非是虚拟USB串口(2.6以后一般都是用高速或全速)。上层作为我们硬件厂商来讲,要实现的,主要是根据不同的3G模块,重新整理生成自己的libreference-ril.so动态库了(一般的电话或短信基本功能这里就够了),有机会我也具体总结下,3G的移植,以及网络更新时间和基站定位等功能的实现。
     今天遇到个问题,就是产品中“自定义3G开关”耗时问题,.这是以前“领导”留下的;自定义3G开关,只系统起来后,给用户一个开光,让其去打开3G和关闭3G。而这个开关的功能是:通过“插桩”的方式控制LINUX内核中3G的打开和关闭,以及扩展一个OnPreferenceChangeListener,显示3G的运行状态。主要的考虑是功耗问题。
     但是原来一直好用的这个APP,再新的产品中确出现两个问题!1,打开3G开关的时候,手去碰下屏幕,就会弹出activity崩溃的;2,串口经常会提示找不到libreference-ril.so的DEBUG

现象很恐怖,但是问题还是一下就让我怀疑可能是耗时任务引起的、
查看代码:在点击开关的时候,控制底层打开3G,然后会根据虚拟串口是否打开来开启上层我们的3G daemon(ril-daemon)





很明显,这个会有个耗时任务,刚好这个模块的虚拟串口打开并不是非常快速。而居然用while所以这个线程就一直阻塞在这里了。
解决的方式很多人也都知道,















欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0