好的软件除了有好的交互体验外,还需要有好的流畅度,而性能的优化对于应用来说也是很重要的。在开发者选项中,打开“GPU呈现模式分析”选项,可以很直观的查看应用的性能情况。
在我负责的绘画项目中,我发现在使用ViewPager控件滑动预览图片时,黄线超标,代表这会有掉帧的现象。(虽然说这种性能指标超标了,但是用户使用起来没有什么感觉。优化的目的在于要给用户更好的体验)
黄色指eglSwapBuffer耗时操作。 每一步操作的耗时会累加起来,只要不超过绿线就没掉帧否则算是掉帧,也就是卡顿(虽然这里的系统认为的卡顿用户感觉不出来,但也成为卡顿)。黄色主要跟opengl以及系统底层绘制有关,整个系统基本达到稳定后,这部分基本都很稳定。造成黄线超标的原因是因为在加载了内存比较大的图片造成的。又因为项目的需求,每滑动一次,我需要加载两张比较大的图片(PNG),其中只有一张用于显示。
优化方法:
因为我负责的是绘画应用,在绘画时保存了3张PNG格式的图片(1.用于列表显示的小图。2.用于预览显示的大图。3.用于绘画创作的大图),PNG格式的图片占用的内存相对比JPEG大很多,在加载PNG的图片会相对比较耗时。但是因为需求,需要透明图层的存在,在绘画界面的图片必须要用PNG格式的图片,然后把另外两张图片保存时从PNG格式变成JPEG格式,并且调整成90%的清晰度(JPEG格式的图片100%与90%差别不是很大,肉眼难以分别,可以很好的压缩图片占用的内存空间。我测试过图片清晰度在80%以上都不明显,但是80%一下差别会比较明显,一边情况下不建议使用80%以下)。但要确保PNG图片100%的清晰度保存。因为绘画时是在PNG格式的图片基础上绘画的,然后进行保存,这样子做就能确保保存的那两张JPEG格式的图片都是90%的清晰度,而不会出现90%*90%这种越来越不清晰的情况。
优化完成以后,测试了一下,黄线基本上不超过绿线标准,符合标准,说明在加载图片上的速度得到了提升,还能优化应用的内存大小。