当前位置:主页>科 研>学术交流>

浅议那些Android中的性能优化

性能优化是一个大的范畴,如果有人问你在Android中如何做性能优化的,也许都不知道从哪开始说起。首先要明白的是,为什么我们的App需要优化,最显而易见的时刻:用户say,什么狗屎,刷这么久都没反应,取关卸载算了。



 

这跟什么有关,我们先苍白的反驳下,尼玛用户设备老旧网又烂,关我屁事,根本不用优化。可是,老板拍板了,施压给CTO,然后CTO又来找你:Y的今天必须给我想办法优化了,不然不准回家。

好吧,为什么从UI的表象上看,App又卡又慢而且还错乱。我们试着来剖析下吧。

题外话:把minSDK改到4.0+,去特么的low用户,连手机都不愿意换,还能指望它能给你带来多少营收么,直接pass掉吧。4.0前的系统bug不少,不能为了弥补这些bug而降低了整体的高性能。

  好了,让我们先从UI说起:

首先要明白的是UI的绘制流程:measure-layout-draw,measure与layout都需要for loop所有的子控件,汇集起来才能完成绘制,布局。所以子控件越多,所消耗的时间越长(inflate,layout_weight,relative,多层嵌套等),减少不必要的子控件或层级,是相当有必要的。你可以通过merge,viewstub这些标签来减少层级嵌套。如果你的空间观念没那么好,可以用HierarchyViewer工具来检查。

对于Listview或者GridView这种多item的组件来说,复用item可以减少inflate次数,通过setTag,getTag的ViewHolder方式实现复用,这里要注意的是,holder中的控件最好reset后再赋值,避免图片,文字错乱。

对于ViewPager第一次显示时卡顿以及左右滑动卡顿,有以下几种优化方式:

ViewPager同时缓存page数最好为最小值3,如果过多,那么第一次显示时,ViewPager所初始化的pager就会很多,这样pager累积渲染耗时就会增多,看起来就卡。

每个pager应该只在显示时才加载网络或数据库(UserVisibleHint=true),最好不要预加载数据,以免造成浪费。

(责任编辑:安博涛)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

网络“狩猎”:为什么企业需要搜寻攻击迹象

网络“狩猎”:为什么企业需要搜寻攻击迹象?

网络狩猎是企业安全的重要组成部分,本文中专家Eric Cole介绍了它可如何帮助企业阻止...[详细]

如何避免虚拟基础设施单点故障

如何避免虚拟基础设施单点故障

墨菲法则提到如果某事可能会出错,那么这件事一定会出错。可能没有比服务器虚拟化更严...[详细]

浅议那些Android中的性能优化

浅议那些Android中的性能优化

性能优化是一个大的范畴,如果有人问你在Android中如何做性能优化的,也许都不知道从...[详细]

OPM攻击事件后:我们从中学到了什么?

OPM攻击事件后:我们从中学到了什么?

在本文中,网络安全专家Michele Chubirka谈到了她对6月份OPM攻击事件的看法以及企业IT...[详细]

企业网络安全之安全维度

企业网络安全之安全维度

这几年国内网络安全概念很热,国家层面在谈,政府在谈,各种公司在谈,各行各业的从业...[详细]

返回首页 返回顶部