脚本宝典收集整理的这篇文章主要介绍了Android项目中多次操作SharedPreferences导致ANR场景的解决,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
AndROId项目中多次操作SharedPReferences导致ANR场景的解决
随着时代的进步,移动端广告的投放变得越来越多样化,为了接近市场,不少公司自己研发了SDK去收集用户的一些信息以及行为用于分析,根据分析结果使用自定义广告(自定义View)的方式继续向用户进行展示,以提高展示率和点击率。 目前关于广告商方面的选择,国内的广告变现普遍较低,首选应该是接入谷歌广告。随着业务的发展,在一段时间后,公司开始转变成广告接收方,并靠自己的SDK来进行广告的投放,以及优化。
将经纬度上传至国内某定位SDK,获取具体信息。
最后根据定位信息来获取广告并预加载为广告展示做准备。
在项目功能完成后准备上架前,会对项目进行一系列的测试,但是ANR问题在测试过程中很难完成复现,在使用多个机型测试的过程中几乎没有ANR问题的记录。但是在用户的实际使用过程中,由于Android碎片化的严重,加上用户的一些操作的习惯等,会导致出现ANR的问题。面对一些大型的厂家,ANR出现时会弹窗引导用户关闭软件,会导致使用体验不好,造成用户的流失。
在项目一个多月的异常收集中,出现过几次ANR的问题。
QueuedWork.waitToFinish()
,没有待执行的任务,直接执行 finisher,进行阻塞等待, 直到写入文件成功后恢复执行, 这时候如果等待时间过长, 在一些市面上性能差的中低端机型上就会很容易出现ANR。 (8.0以下)当时的优化: 1.减小sp对应的文件的大小,按照分类去读写对应的sp文件。 2.sp的读写轻量的、小的配置信息,将类似JSON的数据交给其他方式保存。
3.当需要多次调用Put系列方法,当逻辑确认不需要立即读取时,在最后一次调用commit或apply即可。
由于ANR的比较难复现,于是写一个方法,反复对SharedPreferences进行操作,以达到类似情况的复现。
出现问题,通过友盟U-APM平台定位: 找到问题后,进行文中思路的操作即可。在情景中,由于Android太过碎片化,又不得直接舍弃低版本用户,采用接入类似友盟U-APM平台的方式去更快的解决问题是必不可少的。但对于一些小型手机的低版本可能还是会出现ANR的问题,针对类似收集用户行为的情景,可采取进行多种方式去进行收集,例如对于低版本的系统,降低对收集数据的完整性等。
以上是脚本宝典为你收集整理的Android项目中多次操作SharedPreferences导致ANR场景的解决全部内容,希望文章能够帮你解决Android项目中多次操作SharedPreferences导致ANR场景的解决所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。