打造令用户对劲的高性能安卓应用的五大法门

时间:2021-10-24 20:53:26

如今,手机和种种移动端应用现已经成为人们日常生活的重要构成部分,因此,应用的数量不停飙升(如今已上线的安卓应用至少到达210万)。对付安卓开发商,在应用范围竞争日益激烈的配景下,打造可以使终端用户对劲的应用正变得空前重要。
 
作为安卓应用开发商的您知道使应用终端用户对劲的关键是什么吗?答案是高性能。实际上,96%的终端用户都认为应用的性能非常重要[2]。下面,我们将讨论能够使终端用户获得对劲的用户体验的五种方法。

在进入正题前,我想先介绍一下高性能的界说以及它为安在使终端用户获得对劲的用户体验方面至关重要。

高性能的安卓应用能够合理地使用设备资源,辅佐终端用户迅速实现方针任务。实际上,高性能应用还可缩短终端用户体验到的感知延迟。

在这里,感知延迟是一个重要术语:它是指终端用户所体验的从点击按钮到界面产生变革这段时间内的时间差。按照终端用户所采纳步履和数据获取来源的差别,我们可以有很多种要领来缩短感知延迟。

此刻,让我们来分析一下终端用户互动和数据加载的五种情景,探讨作为安卓应用开发商的您能够采纳何种方法来缩短感知延迟,并让应用对终端用户需求做出迅速且贴心的响应。
 

1.从比来的资源加载

 
您所开发的安卓应用的终端用户遍布全球,并且毫无疑问,这些用户越来越依赖移动化的生活方法。

您的终端用户和向应用供给数据的网络处事器之间的距离难以保证始终处于掌控之中,而这也正是延迟变长的主要原因。

为了减少感知延迟,您应尽可能从距离较近的的资源向应用供给大部分的数据;别的,许多未授权的API请求可在比来资源被断根,这样就可以制止与后端处事器之间的往返传输,进而提高了对终端用户需求的响应速度。

Akamai智能边沿平台可供给开箱即用的处事。借助Akamai,您可以让数据总是从最优化的资源加载,这样就可以提高应用的性能,您的终端用户也可以等闲地获取数据内容。

2. 缓存和预取

许多从网络处事器加载的资源每每都在不停地进行反复使用。智能缓存机制可以将东西或API响应存储一段时间,以供反复使用,从而缩短冗长的来回传输时间。许多网络或图像加载数据库已经可以供给这种成果,您可以按照需要进行配置。这些缓存东西能够瞬时加载,因此延迟时间很短,终端用户根柢不会察觉到有任何滞后。
 
有了这些数据库,当缓存内容过期时,会对其进行符号,以便从网络中从头加载。按照这些信息,您可以为数据库设定生存再操作缓存东西的时间。许多这样的数据库也撑持HTTP报文头,好比max-age等。这可以辅佐您在无需加速应用更新的情况下控制缓存能力以及直接从处事器加载的缓存内容的生命周期。
 
然而,在例如供给直播体育赛事比分的应用等一些情况下,缓存可能并不适用。对付此类应用,作为安卓应用开发商的您可以继续从网络加载数据。如果您从比来的资源加载数据(请见上文),对付提升应用性能的感化并不显著。
 
在某些情况下,您可能知道终端用户下一步将要做些什么。例如,电子书阅读应用可以预知,当终端用户正在读一本书的某一页时,他们可能会向前或向后翻。基于这种认知,该应用可以提前预取几页然后进行缓存。这样,当终端用户翻到这几页时,页面就可以瞬时加载。
 
类似的,在电商应用中,如果终端用户浏览到第四行的商品,他们有可能也会翻看下一页的商品。如果应用能预取下一页内容并进行缓存,那么当终端用户翻到下一页时,数据就可以瞬时加载。
 
正如您看到的这样,您可以使用多种方法预取并缓存数据,以此降低感知延迟,从而提高终端用户的使用的对劲度。
 
3. 迅速加载API的响应速度
 
应用频繁使用API。如果API响应能迅速加载,那么终端用户不必耗费太多期待时间,而将更多时间用于使用应用上。
 
为此,您作为安卓应用开发商需确保有尽可能多的应用从尽可能近的资源(即:网络边沿,请见上文)中加载。这样,只有那些必需访谒源处事器的API请求,才需要经历可能长达半个地球距离的漫长“旅程”。
 
另一种要领是缩减应用和后端处事器之间传输的数据巨细,以此加快API响应速度。为此,您可以探索Colfer[4]或谷歌的协议缓冲(也称为Protobuf)等数据格局,而不是JSON。在将数据传至网络之前需将数据转化为二进制,与JSON对比,这种格局可大幅缩减API请求/响应的字节长度。值得注意的是,为了启动与Protobuf的协作,您的网络处事器和应用都需要特别的投入;不过,在许多情况下,给与Protobuf获得的性能提升远赶过启动它所需做出的努力。
 
迅速加载API的响应速度、优化感知延迟的第三种要领是缓存或预取可预测且反复的API响应。在缓存时,作为安卓应用开发商的您可将API响应存储至本地数据库表中,这样读取速度就能比从网络中读取的速度更快。这个本地数据库可按照本身的逻辑加以清空或刷新,不过,从本地数据库加载,然后再刷新的过程有助于实现最佳性能及最短的感知延迟。
 
4.优化图像和视频
 
除了API之外,终端用户还可能需要加载很多的图像和视频。一般来说,应用加载的图像也可在同一应用的网站等其它处所使用。
 
与移动端应用对比,使用电脑打开的网站图像对屏幕巨细、辨别率和设备类型的要求有所差别。很重要的一点是,应用上的图像需要按照资源有限的移动设备进行优化。移动端应用上的视频亦是如此。
 
即方便这些媒体从比来的资源加载数据,它们也可能达不到最快的速度;因此,作为应用提供商,您还需要确定图像和视频是否得到了优化。这些东西的绝对巨细以及全球移动数据网络的不成预测性很容易抵消您仅用就近处事器就能实现降低延迟的优势。
 
为了实现这种优化,需要确保移动端应用具有最合适的辨别率和巨细,以便加载图像或视频。如果这些设备太大,那么下载就会花费很永劫间;如果它们太小,那么在屏幕上则会显示马赛克。
 
Akamai图像打点器(Akamai Image Manager)是一种可以辅佐安卓应用开发商操作单一的高质量原图对诸多移动设备进行自动优化的解决方案。这种优化也可使图像和视频的缓存变得越发容易。如果设备类型数量有限,您也可以存储同一张图像的多份差别副本。
 
图像每每包孕很多不常用于应用中的EXIF数据[8](例如,拍照时设置相机细节)。Akamai Image Manager可对此进行自动优化,不过您也可以操作tinypng[9]等处事手工断根这些数据。这种优化可以缩小图像文件的巨细,从而缩短加载时间。
 
另一种优化方法是操作渐进图像和自适应视频流。借助这种优化,终端安卓应用就无需期待整张图像下载;应用可逐地势下载这些图像,并在其下载时就开始显示。这可制止终端用户进入空白图像视图,同时缩短感知延迟。类似的,自适应视频缓冲技术可按照网络条件动态地调解视频质量。当带宽较小时,它可调低视频辨别率,以便终端用户能看到部分视频,而不是仅看到正在加载中的屏幕。
 
除了PNG和JPEG图像,您也可以测验考试WebP格局。虽然创建WebP格局的图像需要花费更多时间,但加载时却越发高效。在本地或网络加载过程中,测验考试SVG图像是另一种节省磁盘空间的有效要领。
 
5.优化本地动画和过渡
 
动画在辅佐终端用户获得对劲的用户体验、以及奉告用户勾当方面起着重要的感化。与性能对比,动画与感知延迟有着更明显的关系。
 
过长的动画加载时间会使终端用户感想急躁和无趣;太短或卡顿的动画会让终端用户难以理解内容的含义。两种情况城市给您的终端用户留下欠好的体验。电池耗量也是设计精良的动画必需考虑的一个方面,动画在供给愉悦的用户体验的同时,还需要做到消耗尽可能少的资源。
 
按照Material Design guidelines by Google,移动设备上较长的动画的长度为300-400毫秒,较短的动画为150-200毫秒。比这些更长或更短的动画可能会让人觉得有滞后或是难以跟上。Material Design guidelines on motion是通过例子了解这些时间范畴的好选择。
 
所以,为了让终端用户更好地舆解短动画的内容,动画的连续时间应在150-200毫秒之间。类似的,任何过渡帮助(好比从一个屏幕转到另一个屏幕)都不应善于400毫秒。倾向于反复的动画(好比进度条)应遵循类似的原则。单段动画的长度可以在300-400毫秒之间,这样它就可以在进度条退出前进行循环。
 
如果您想了解更多关于人类感知行动的信息,请阅读名为Human Processor Model的研究。
 
结论
 
高性能的关键是综合考虑数据细节并谨慎地操作资源。幸运的是,我们有很多种方法来实现这个方针。
 
除了上述五大法门之外,我还想向安卓应用开发商强烈保举此外两种资源——The Art of Computer Programming[13]和Introduction to Algorithms,它们可以辅佐您遵循最佳编码实践并操作最高效的算法,打造高性能的安卓应用,使终端用户获得对劲的用户体验。