立即注册
查看: 2665|回复: 1

[Framework经验分享] A20频繁插拔U盘导致mediascnner崩溃

已绑定手机
发表于 2017-11-28 13:36:29 | 显示全部楼层 |阅读模式 来自 广东省深圳市
file:///E:\QQ\记录\714575595\Image\C2C\AZCVZ}I}1%ETPR5HWK1G71M.pngfile:///E:\QQ\记录\714575595\Image\C2C\AZCVZ}I}1%ETPR5HWK1G71M.pngfile:///E:\QQ\记录\714575595\Image\C2C\AZCVZ}I}1%ETPR5HWK1G71M.png之前遇到过一个客户,最喜欢在U盘刚刚读出来时就拔掉U盘再立马插上U盘,刚读出来又拔掉,一直这样子重复测试。我在边上看的瞠目结舌,实际使用中有几个人会这样子去操作的呢?不过我还是很佩服那位测试小哥的测试能力。
U盘插拔次数多了之后就会出现多媒体app无响应的情况,一路跟踪代码最后发现其实是mediascnner在收到U盘拔出广播后,mediascnner针对U盘拔出所要进行的流程还没有走完,这时候又收到了U盘插入的广播消息,去遍历外部USB设备中的文件。但是在全志A20的源代码中,mediascnner针对U盘拔出这部分的代码加了个锁,加这个锁并非是错误的做法,但是它锁住的代码太多了。这样子就会导致这样的问题发生,如果加锁的这段代码根本就没有执行完,再强制性去执行其他的代码就会有问题了。这部分代码位于android\packages\providers\MediaProvider\src\com\Android\providers\media\MediaProvider.java
修改过的.png


上面红色大括号中的代码都是被加锁的部分,后面改成只对getTableAndWhere(uri, match, userWhere, sGetTableAndWhereParam);这一句加锁,就没有遇到过这类问题了
源文件.png
已绑定手机
发表于 2017-11-28 14:16:52 | 显示全部楼层 来自 广东省深圳市
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表