在@scale 2014大会上,Instagram工程师Tyler Kieft做了题为《普通安卓设备上的Instagram》的演讲,介绍其团队如何针对普通手机(相对高端手机而言)重新思考Instagram的设计。Highscalability.com据此报道了Instagram的性能优化之道。
\\转向扁平化设计
\\在开发新版本的Android应用时,Instagram团队借鉴了开发iOS7应用时的扁平化设计经验,从以下几个方面做了改进:
\\- 去掉了所有的渐变色和光滑的按钮,用轮廓形状代替。\\
- 去掉了评论图标,使评论可以充分利用屏幕宽度,显示更多内容。\\
- 为拍照功能创建了不同的布局。在小屏幕手机上,拍照按钮在屏幕上方;在大屏幕手机上,则是在下方。\\
- 去掉了应用中所有不必要的UI,更注重内容的展示。\
这样做的好处是:
\\- 资源传输减少,这意味着APK文件更小。借助“资源着色(Asset Tinting)”技术,图像可以通过编程进行着色。\\
- 资源加载减少,这意味着UI显示速度更快,内存使用更少。\\
- 迭代速度更快。如果开发人员想改变颜色,只需改变代码并重新编译,而不再需要设计人员参与。\
扁平化设计使Instagram在所有设备上的启动时间减少了120毫秒。而且,整个应用的运行速度都更快了。
\\缩短冷启动时间
\\冷启动时间是指从应用开始启动到可以响应用户请求这段时间。为了缩短冷启动时间,提高冷启动速度,增强用户体验,Instagram团队采取了如下措施:
\\- 性能分析——反复对应用进行性能分析,找出增加应用冷启动时间的原因。通过延迟加载、重写速度慢的代码、将可以后台完成的任务交由后台线程处理等方法消除性能瓶颈。\\
- 单例实例与UI分两部分并行加载, UI无需等到前者加载完成就可以显示。\\
- 将Newsview由Webview改为原生控件。仅此一项就使冷启动时间缩短了30%。\
通过上述改进,Instagram在低端Galaxy Y上的启动时间由3秒降至1.5秒,在高端Galaxy S5上的启动时间由750毫秒降至400毫秒。
感谢郭蕾对本文的审校。
\给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。