在 @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 )关注我们,并与我们的编辑和其他读者朋友交流。
评论