设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

面向新兴市场改进Android开发

2014-11-17 15:22| 发布者: joejoe0332| 查看: 708| 评论: 0|原作者: 臧秀涛|来自: InfoQ

摘要:   在@Scale 2014大会上,来自Facebook和Instagram的工程师做了题为《Scaling Android Apps for Emerging Markets》的演讲,就如何面对不同的Android设备和不同的网络连接速度改进其应用的表现分享了相关经验。 Fac ...

  在@Scale 2014大会上,来自Facebook和Instagram的工程师做了题为《Scaling Android Apps for Emerging Markets》的演讲,就如何面对不同的Android设备和不同的网络连接速度改进其应用的表现分享了相关经验。


Facebook

  Facebook将团队送到了亚洲、非洲、中美洲和南美洲的一些国家,去评估当地的手机市场。他们购买和使用了当地流行的设备,以了解在这些设备上访问Facebook的应用时的用户体验。Chris MarraFacebookAndroid开发产品经理,他就这些新兴市场中Android设备和网络连接情况分享了一些发现:

·         通常访问Facebook的设备模型有10 000种左右

·         在发展中国家,有两种占据统治地位的移动设备:功能机和低端入门级Android手机

·         这些设备通常是使用上一代硬件制作的

·         互联网连接还属于高级服务,存在网络堵塞

·         手机较慢,屏幕较小,网络连接状况往往比较差

·         美国的3G网络覆盖率达70%,而像巴西和印度,覆盖率分别是38%和7%


  在给这些市场把过脉之后,Facebook就开始改进其应用了。他们发现,因为内存有限,经常会导致OutOfMemory错误,使用较老手机的用户碰到应用崩溃的情形明显要多得多,所以他们决定提供一个不同的版本,以确保应用在这类设备上运行更平滑。因为用户在较老的手机上体验不好,Facebook不得不砍掉了动画和其他很耗CPU的界面操作。


  在看到了应用在某些低端手机上的表现情况之后,Facebook创建了一些工具,帮助团队了解存在的问题,同时开始改进在这类设备上的用户体验。屏幕大小是必须考虑的一个因素,10%的Facebook用户使用的是分辨率较低(120 DPI)的手机。开发团队决定裁剪用户界面,去掉或者简化窗口小部件(widget)和图标。


  Facebook的工程经理Andrew Rogers,详细介绍了他们为改进用户体验所做的一些步骤。


  图片大小。在Facebook的Android应用上,图片数据占到了85%。在Facebook Messenger应用中,图片数据占到了网络传输数据量的65%。应该尽可能减小图片大小。这是通过如下手段实现的:

·         在服务器上调整图片大小

·         提供分辨率不同的多份图片:用于新闻摘要(feed)的预览图、用于个人信息显示的缩略图和用于照片存储的较大的图

·         根据屏幕大小下载小型图片

·         只有用户放大的时候才使用全尺寸图片;大部分时间,用户只需要较小的缩略图或预览图

·         Android上,90%的图片使用WebP格式,与JPEG格式相比,质量相同的图片大小要小30%。存在的问题是,Android 4.2+才提供了对WebP的原生支持,所以之前的Android版本上,还需要在设备上将图片转码成PNG或JPEG


  网络质量。Facebook意识到,根据网络类型来确定网络速度还不够。尽管使用的是同样的技术,如 Edge、HSPA或LTE等,某些国家的网络速度可能会比其他国家慢2到3倍。像印度或巴西,WiFi的速度要比LTE慢,所以最好动态确定真实的网络速度。


  为减少下载时间,他们决定:

·         进一步压缩图片

·         发出更多并行的请求

·         关闭自动播放

·         预取更多内容


  为了能够在部署之前在不同的网络上测试其应用,Facebook创建了Air Traffic Control这款工具来模拟WiFi上的不同网络连接类型,它能够配置最大带宽、丢包率、上行线路/下行线路的往返时延。


  预取内容。Rogers提到的另一个改进用户体验的方式是预取某些内容。对于延迟较高的网络,这特别有用。但是预取也不能过度使用,因为这会填充缓存,再就是预取的数据不能肯定会用到。


Instagram

  Tyler Kieft是Instagram的一位Android开发工程师,他介绍了他们团队为改进其Android应用的性能和用户体验所做的一些调整。其一是使 用现代的扁平式设计重写了界面,去掉了渐变效果、抛光色彩和阴影等,这在各种Android设备上都带来了性能提升。


  扁 平化设计还带来了一个效果,实现了资源裁剪。应用不再需要各种颜色的资源,而是只有一种颜色即可。Instagram将应用的一个视图所需要的资源从29 个减少到了8个。其结果是,UI显示提速,占用的内存空间减少,冷启动时间下降了120毫秒。此外,用户对于新的界面和性能改进反应非常积极。


  据Kieft介绍,为确定哪里比较慢,他们使用Android Traceview和计时语句分析了应用的性能。 然后采用了下列措施:

·         从冷启动路径中去掉较慢的东西

·         重写了较慢的代码

·         将一些东西延迟到一个后台线程中

·         重复以上步骤(分析、重写)


  他们还使用了两步的惰性加载:在UI线程上创建单件(singleton)对象,但是在这些对象上执行的动作,比如访问cache的磁盘存储信息、加载HTTP客户端的证书和反序列化cookies等,都放到了一个后台线程上。


  另一个减少应用冷启动时间的手段是,使用原生代码代替WebView,在不同版本的Android上,平均节省了30%的时间。


查看英文原文:Facebook & Instagram Lessons on Android Development for Emerging Markets

转自 http://www.infoq.com/cn/news/2014/11/facebook-instagram-android?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部