内存优化, UI性能优化 汇总

一大堆前人指引

http://www.jianshu.com/p/98032786711a

http://hukai.me/android-performance-patterns-season-6/

如何减少应用的内存使用量

1. 使用优化的数据结构,  比如使用SparseArray族替换HashMap, 减少auto-boxing的开销, 和减少内存占用

但是当数据量超过1000时, 速度会比HashMap慢很多.

ArrayMap 默认尺寸为0.

2. 减少使用抽象, 减少类的数目, 降低内存占用.    --- 这一点基本上可以忽略, 现在越来越重视建模的重要性了.

3. 避免使用enum   .    这点也仁者见仁吧.

4. 相对于 Sevice 尽量使用IntentService.  避免不需要的Service在后台运行.

5. 谨慎使用第三方库,  尤其一些不是专门为移动设备开发的第三方库, 可能会对内存的占用不够高效.

6. 使用合适分辨率的图片.  避免不必要的高分辨率.

7. 避免内存泄漏   -- 这个是正确性问题, 比上面的优化措施都要严重.

8.  小心使用异步回调.  会影响对象回收.

如何避免内存抖动

1. 避免频繁创建临时对象,  这里的频繁创建场景包括, onDraw()  getView()  bindView(), onViewAttchedToWindow(), ..等执行非常频繁的函数.    比较常见的错误是paint对象的初始化.

方法就是缓存, 包括对象池技术, 可以提供bitmap, connection, view的缓存,

2. 优化逻辑, 减少内存使用.

3. 注意auto-boxing

如何提高滑动时的流畅度,  或者说如何避免卡顿, 丢帧.

1. 避免内存抖动,   减少滑动时的内存回收操作.    ---- 而这一般是通过缓存做到的,  这就要增加内存的占用量

2. 从逻辑上, 减少滑动时的计算量, 减少cpu耗时.

2.1  降低布局复杂度, 减少嵌套层级, 包括整个activity, fragment级别的层级.

2.1  延迟加载不必要的图片, 不必要的控件,     使用viewstub避免创建不显示的控件.

2.2  使用易于计算的控件, 尽量减少measure次数,  还有避免不必要的刷新

2.3  去除不必要的背景颜色, 避免过度绘制.

2.4  去除不必要的透明度, 减少重绘次数.  可以使用完全透明的背景, 这是没有问题的.

2.5  onDraw时, 减少或者避免重叠的绘制区域, 可以考虑使用ClipRect之类的优化.

2.6  直接访问变量, 要比通过getter方法快.   延伸出一种情况, 如果使用内部类, 并且内部类引用了外部类的私有变量,  那么尽量使用包访问权限, 而不是私有访问权限修改变量.

http://hukai.me/android-training-performance-tips/

2.7  如果能通过int实现, 就不要使用float和double

2.8  减少使用资源   可以考虑使用ColorFilter上色.

2.9  减少不必要的显示元素,  能用GONE的千万不要使用invisible

2.10  尽量保持你的布局只有一层拥有Background,避免给过多的ViewGroup设置背景. 如果用到了系统定义的MaterialDesign的主题会默认给一个背景。可以在Activity设置                                  getWindow().setBackgroundDrawable(null);

2.11  对于复杂布局, 使用ConstraintLayout进行优化.

2.12  注意自动装箱, auto-boxing 有时候会导致性能问题.

2.13  滑动过程中, 修改一个控件的尺寸或者某些属性,  小心影响其他控件的布局, 可能会导致整个view 树的重新计算.

2.14  滑动时避免调用requestLayout()方法.

解决卡顿问题,

1. 量化问题,  建立一套工具或者流程去计算当前的帧率, 平均耗时, 通过优化后做对比, 可以看到优化的效果

adb shell dumpsys gfxinfo com.kingsoft   检查帧率数据

2. 发现问题的工具, Traceview, Hierarchy Viewer, 检查

如何降低耗电.

1.  避免一直活跃, 无法使手机进入休眠.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,176评论 5 469
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,190评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,232评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,953评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,879评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,177评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,626评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,295评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,436评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,365评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,414评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,096评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,685评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,771评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,987评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,438评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,032评论 2 341

推荐阅读更多精彩内容