问题:在谷歌商店后台看到清理结果界面anr率最高,发生在handleStopActivity的时候等待sharedPreferences数据写入的时候,进入此界面需要主界面-->扫描界-->清理结果界面,anr率不正常
1.分析场景环境
- 清理界面:扫描文件后点清-->做动画+线程删除文件-->跳转清理结果界面
- 清理结果界面:主要就是加载显示1个广告
- anr发生操作路径:用户清理文件结束-->进入到结果界面—>看到结束立刻按返回-->卡住-->anr
2.检查sharedPreferences
- 清理模块代码是从安全中心的清理模块移植过来的,检查引入代码里面的sharedPreferences数据保存,没发现有保存操作。
- 反编译apk搜索发现公司广告sdk里面和谷歌/fb广告sdk里面有数据保存操作,查看对应代码处大致逻辑+手机模拟操作导出sharedPreferences文件查看,admob广告存的数据较大有比较大的嫌疑,但是如果对其处理可能会影响广告收入,而且主界面也有相同的广告,只因为这个点anr应该主界面anr率更高才对。
3.检查ui线程卡顿
- 清理界面界面卡顿主要是谷歌/fb广告主线程拉取耗时、生成/显示广告view耗时,谷歌/fb广告拉取修改到了子线程,广告view布局做了优化,此界面anr没有可分辨变化,总的anr率的变化可能是因为其他界面的优化。
4.检查资源占用的影响