Instagram工程师教你如何改善App的性能

摘要:扁平化设计最核心的地方就是放弃一切装饰效果,诸如阴影、透视、纹理、渐变等等能做出3D 效果的元素一概不用,所有的元素的边界都干净俐落,扁平化设计不仅是一个美丽的外表,它带来的还有性能上的提升,

【编者按】扁平化设计由于其简洁的外表,更少的按钮和选项使得界面干净整齐,从而减少认知障碍的产生。扁平化设计更是功能上的简化于与重组,相比于拟物化而言,扁平风格的一个优势就在于它可以更加简单直接的将信息和事物的工作方式展示出来。本文来自Instagram一名工程师的分享。

以下为译文:

扁平化设计仅仅只是一个漂亮的外表,还是一个性能利器,从而触发一场UI革命?实践证明是后者。

Tyler Kieft 是Instagram一名工程师,他详细解释了这其中的缘由,更详细的内容请关注他在@scale会议上的演讲: 标准安卓手机上的Instagram 。这个演讲是由Facebook提供的,是“如何在实际情况下设计移动应用程序”系列的一部分,这里的“实际情况”是指那些手机速度更慢、屏幕更小、网络比美国更慢的地方。

为标准手机设计App和高端手机并不一样,Instagram团队需要重新思考他们的设计。从Tyler的谈话中得到的启示之一是转变到扁平化设计,因为这将让应用程序更美观、更实用、并且还能大大提高性能。

这的确出乎我的意料,我曾经认为扁平化设计只是构建更美观的UI。现在想想真是愚蠢之极。感谢Tyler如此详细的解释了扁平化设计的好处, Instagram说明了一切。

扁平化设计是反拟物化,它采用简单的元素、简单的排版、单调的颜色以及简单的设计。

使用扁平化设计,Instagram可以减少120 ms的冷启动时间,同时应用程序更美观、更好用、并且更专注将内容传送到不同大小的手机上。

那么扁平化设计是如何实现的呢?

转变到扁平化设计

  • 为了更专注性能,Instagram重写他们的UI。
  • Instagram在2012年发布Android版本时,只有3个人的团队,花了大约4个月完成。其中两个工程师,一个设计师。Android版本使用了和iOS版本相同的设计。
  • 使用的丰富的渐变特性和大量的UI元素。
  • 过渡到扁平化设计后,产品更简单和更美观。没有更多的渐变,没有更多的阴影。
  • 通过采用扁平化设计,他们得到的经验是:

  • 扁平化设计使开发量更小,开发代码更快、更新产品更快,这对开发人员来说是个好消息。
  • 扁平化设计带来的是性能的提升,不仅开发人员做的少,而且速度更快。

  • 新Android版本的目标就是利用他们从iOS7扁平化设计中学习到的经验来重新设计:

  • 让它更扁平、更快。这不是重写,导航模式并没有改变。
  • 要有强烈的屏幕空间意识。用全新的眼光看待每一块屏幕,尽量让设计能更好地适应所有的屏幕尺寸。
  • 让它更美观。这是Instagram团队所做一切的基础。

  • 整体效果发生了显著的简化,那么发生了那些变化呢?

  • 去掉所有的渐变和光滑按钮。让图标回归鲜明的轮廓,取代渐变效果。保留纯色和扁平形状,以便UI融入背景。
  • 去掉评论图标,使评论占据屏幕的全部宽度,给予评论更多的文本空间。屏幕上重点强调内容,让小屏幕手机用户有更多的空间来读正文内容。
  • 拍照功能的重新布局。在小手机上,动作按钮设计在屏幕的顶部,而大屏幕手机所有的命令在底部。
  • App上不必要的UI全部去掉,让用户更多的关注内容。chrome搜索屏幕从三层减为两层。这给了小手机很多空间,给内容很多空间。

为什么扁平化设计

  • APK将更小,这对小型网络非常适合。神奇的是Asset tinting(我从来没听说过的东西)。Asset tinting意味着assets,在这种情况下是图像、可以以编程方式着色。例如,一个灰色的心可以通过编程方式变为红色。
  • 加载较少的assets。这意味着UI显示更快并且以更少的内存来存储位图。每个需要被显示的assets必须以闪存的方式读取并且解码成一个位图。越少这么做,App就会越快。
  • 更快的迭代时间。如果你想改变颜色或重新开发,你不需要一个设计师了,需要的事更改代码和编译。
  • 结果:

  • 在扁平化设计之前,需要29个不同的assets来显示feed screen。扁平化设计之后,只用了8个。仅凭这些,就在所有设备上减掉120 ms的冷启动时间。
  • 扁平化设计之后,整个App更快了。更少的assets被加载,整个App变得更灵巧,速度变得更快了。

改善冷启动时间

  • 冷启动时间是指应用程序启动和响应的时间。目标就是让应用程序启动更快,让用户在低端手机上有一个好的体验。
  • 几年前,在低端三星Y系列手机上 Instagram的启动时间是3秒,在高端三星S5上,启动时间是750 ms。
  • 现在三星Y系列上 Instagram启动需要1.5秒。在三星S5上是400 ms。
  • 怎么做?

  • 配置App。

  • 找出是什么减慢了这个App的速度。
  • 在Android上你可以使用method tracing,以及timing statements,两者兼用会事半功倍。

  • 修复最慢的部分。

  • 延迟加载。将项目从冷启动路径删除。
  • 重写代码。例如,缓慢的JSON解析代码重写后会更快。
  • 遵从后台线程。能在后台完成的不要在UI线程上做。

  • 迭代。再次启动配置步骤。

  • App-wide 单例模式被发现是缓慢的。

  • 很多重度单例模式先于App启动:HTTP客户机、Cookie存储、图像缓存、视频缓存。真的不需要这些东西来显示UI给用户。它们可以并行地在后台加载。
  • Two-part 延迟加载

  • 在后台初始化单例模式,不要让程序员必须检查一个单例模式是否是可用的。

  • 在UI线程上创建足够的对象,以便完善公共API功能。将功夫用到后台线程上。缓存从磁盘存储打开和阅读,客户端证书在后台加载。Cookies反序列化和解码在后台。通过这些改变,UI将更快地出现在屏幕上。

  • Newsview变慢。通过method tracing发现。

  • Newsview,显示你所有的喜好和评论,最初作为webview编写。它需要在启动时加载,以便尽可能快的显示用户数据。
  • 问题是没有控制webview,它有它自己的堆栈和缓存系统。转换到本地,需要2 - 4周。本地转换后的冷启动时间减少了30%。

经验

  • 快速冷启动时间是可以实现的,通过配置、修复、迭代。
  • 审慎使用像素。看看每一个屏幕不需要什么。其他国家用户手机的屏幕显著小于美国的。
  • 移动手机喜欢简单的设计,移动开发者也是如此,他们喜欢更简单、更快的设计。

原文链接:  Instagram Improved Their App's Performance. Here's How. (责编/魏伟)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
默认的Instagram.com布局没有针对桌面进行优化。这个扩展改善这一点。 默认的Instagram.com布局未针对桌面进行优化。 此扩展改进了设计。 它还可以让您在网络上查看保存的(“收藏集”)和喜欢的图像! 要查看它们,请单击右上角的3点菜单。 接下来,由于Instagram已针对手机进行了优化,因此它们永远不会加载最高质量的图片,并阻止右键单击图片下载。 该扩展程序改变了这一点,并允许您通过右键单击来保存最高质量! 我的扩展程序不收集任何私人数据,并且图像仅存储在PC上。 此外,该代码是开放源代码,供您检查/贡献:https://github.com/kurtextrem/Improved-for-Instagram隐私权政策:https://kurtextrem.de/chrome/PRIVACY.html(敏感数据为*仅收集并存储在您自己的PC *上,如果打开Chrome Sync,则选项会同步。)权限:“ *。instagram.com/*”、“instagram.com/*”表示只能访问Instagram API和Instagram网站。 如上所述,数据仅在您自己的PC上收集。 Changelog --------- v2.10.2:修复了IG更新v2.10.0之后无法正常播放的视频:当用户观看其帖子时,如果用户更改了他/她的个人资料图片,现在会收到通知。 v2.9.5.7:修复“监视”不适用于新安装(对不起!)。 v2.9.5:修复了无法将用户添加到监视列表的问题; 修复每个帖子上不起作用的3点; 在夜间模式下修复视频; 删除了“阻止故事”功能,因为您可以在Instagram本身中通过长按故事v2.9.4来使用帖子中的3点或在应用程序中使用三点:修复“观看”不起作用(大多数通知都不会时间),修复浏览器页面并修复新的单个帖子(布局有点中断)v2.9.3:修复了“标记的用户不可见”,略微更新了夜间模式v2.9.2:修复了“无法在新版中打开图片标签”错误v2.9.0:故事的新设计! v2.8.3:更新了夜间模式。 更好的颜色。 修复了有关3点页面的一些错误。 v2.8.2:修复了消失的选项。 该错误确实很奇怪。 v2.8.0:现在,您可以看到“收藏夹”文件夹。 但是,此刻目前处于beta测试中。 因此,您看到的是ID而不是集合名称。 v2.7.0:令人兴奋的新功能:您现在可以观看用户并在他们发布任何内容或添加故事时得到通知! v2.6.0:感谢易卜拉欣·特内凯西(Ibrahim Tenekeci),新徽标/图标! v2.5.9:故事滚动得到了稍微改善。 v2.5.7:修复了一些错误。 v2.5.4:新设置:控制帖子的宽度。 此外,还修复了有关故事的错误(此外:您现在可以下载故事中的视频)。 v2.5:3点菜单现在包含选项,例如,可以启用夜间模式(Alpha版)! 将来会有更多设置。 v2.3.27:漏洞修复v2.3.21:新功能:在单个帖子页面上,最高质量的页面被加载。 因此,您可以右键单击以原始质量保存图片。 v2.3.20:更新到最新的Instagram更改v2.3.15:3点菜单比以往更快,并且修复了一些错误。 v2.3.14:可以再次下载视频v2.3.10:支持Web上的本机故事(Instagram已实现,并且正在推广;不再需要第三者扩展:))v2.3.9:修复了“无法滚动“ 问题!! 遗憾的是,由于存在Instagram,我无法再在小屏幕上连续使用3个帖子。 可能性为:每行2或4。 (大屏幕每行停留在4个以上)请给我您喜欢的反馈! (以后会添加一个选项)v2.3.4:修复了“全屏视频无法正常工作” v2.3.3:改进了3点页面的性能; 错误修正v2.2.14:错误修正(感谢社区报告错误,尤其是Kelvin!)v2.2.5:修正了“谁喜欢我的图片” +隐藏在页面v2.2.0后面的搜索建议:现在支持3点菜单页面轮播发布正确:) v2.1.0:针对最新Instagram设计的更新。 v2.0.0:增加了在网络上查看喜欢和保存的图像的功能! 单击右上角的三个点以查看它们。 此外,还修复了许多错误。 v1.0.20:修复了社区报告的问题:从主页导航到个人资料,然后单击帖子时,导致模式损坏。 v1.0.15:略微提高了性能v1.0.14:缺少Chrome IG Story时的固定版式v1.0.12:新图标,名称和错误修复该项目绝不与Instagram或其他机构有任何关联,授权,维护,赞助或认可其关联公司或子公司。 这是一个独立的项目。 使用风险自负。 支持语言:Deutsch,English

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值