今天测试的妹子跟我说,公司的一个项目中发现有一个问题:在某些情况下文件浏览器的文件的加载速度非常慢,等待很长时间才显示!
首先,我的第一反应是,这不是软件的文件,一定是移动设备的问题。然后我就问测试妹子:你确定你没有在后台运行一堆软件的情况下测试么?
她十分肯定的回答:没有,只运行了XXX(公司的软件)。
先说明一下,我们公司的这个项目比较老,并没有用什么RxJava、EventBus这种主流框架。全是用什么AsyncTask+Broadcast这种原始的东西。这次的图片文件获取的过程就是用AsyncTask来获取的。让我仿佛回到了那种原始人用石头开荒的年代,被这种AsyncTask+Broadcast支配的恐惧可能老一点程序猿就深有感触。
所谓的某些情况是这样的流程:
首先,页面A 是有图片分析与捕捉的功能模块,可以分析或者捕捉图片。然后有一个按钮可以可以跳到页面B ,页面B 是文件浏览器用于浏览捕捉到的图片,浏览图片时,可以选择分析图片,此时是从页面B跳回页面A进行分析。
出现加载缓慢的操作是(红色标注是导致缓慢的操作):A->B->A->B。先在A捕捉图片,跳到B浏览所有捕捉到的图片,选好图片后然后再从B跳到A进行分析,最后在从A跳到B继续浏览图片。奇怪的地方就是第一次A->B是十分流畅的的,第二次A->B时却是十分缓慢!OMG,逻辑一模一样,而且第一次B->A时,我已经把B销毁了,理论上再次A->B,完全和第一次样。打印了B的生命周期方法