Android性能优化

一、OOM & ANR

1、过多地使用内存会导致程序内存溢出,即OOM

2、过多使用CPU资源,即做大量的耗时任务,会导致手机变得卡顿甚至出现程序无法响应的情况,即ANR

二、性能优化方法

1、布局优化

(1)尽量减少布局文件的层级

a、删除布局中无用的控件和层级

b、有选择地使用性能较低的ViewGroup,比如RelativeLayout

c、布局中既可以使用LinearLayout也可以使用RelativeLayout,那么采用LinearLayout,否则采用RelativeLayout,因为RelativeLayout功能比较复杂,布局过程中需要花费大量的CPU时间

d、采用<include>标签、<merge>标签和ViewStub

<include>标签:主要用于布局重用

<merge>标签:一般和<include>标签配合使用,它可以降低减少布局的层级

ViewStub标签:提供按需加载功能,当需要时才会将ViewStub中的布局加载到内存,提高程序的初始化效率

2、绘制优化

(1)View的onDraw方法避免执行大量操作

a、onDraw中不要创建新的局部对象,原因是onDraw方法可能会被频繁调用,这样将会产生大量临时对象,不仅占用过多内存,而且还会导致系统更加频繁gc,降低程序的执行效率

b、onDraw方法中不要做耗时的任务,也不能执行成千上次的循环操作,大量的循环会抢占CPU的时间片,造成View的绘制过程不流畅

3、内存泄露优化

(1)分两方面优化

a、开发过程中避免写出有内存泄露的代码;

b、通过一些分析工具如MAT来找出潜在的内存泄露继而解决

(2)内存泄露例子

a、静态变量

静态变量内部持有当前Activity,从而导致Activity无法释放

b、单例模式

单例模式接收外部注册并将外部的监听器存储起来,使用单例模式时,调用其注册监听,但在onDestroy时没有解注册操作,从而引起的内存泄露

c、属性动画

属性动画中有一类无限循环的动画,如果在Activity播放该动画且没有在onDestroy中停止动画,从而导致Activity无法释放

4、响应速度优化

5、ListView优化

6、Bitmap优化

7、线程优化

8、一些性能优化建议

a、避免创建过多的对象

b、不要过多使用枚举,枚举占用的内存空间要比整型大

c、常量请使用static final来修饰

d、适当使用软引用和弱引用

e、采用内存缓存和磁盘缓存

f、尽量采用静态内部类,这样可以避免潜在的由于内部类而导致的内存泄露

三、提高程序的可维护性

1、命名要规范,要能正确的传达出变量或方法的含义,少用缩写,关于变量的前缀可以参考android源码的命名方式,比如私有成员以m开头,静态成员以s开头,常量则全部用大写字母表示等

2、代码的排版上需要流出合理的空白来区分不同的代码块,其中同一变量的声明要放在一块,不同变量的声明之间要留出一行空白作为区分

3、仅为非常关键的代码写注释,其他地方不写注释

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值