您的位置:首页 > 移动开发 > Android开发

android性能优化相关

2016-10-10 11:08 225 查看
1,布局优化

一般布局涉及到嵌套层次的时候,大多采用RelativeLayout和LinearLayout,但是当LinearLayout一层满足不了条件时,采用RelativeLayout,

include,当有布局复用时使用。当include的rootview和include所在layout的当前viewgroup可以统一时,可以用merge来合并,

2,绘制优化

主要就是不要在onDraw中过多的创建对象或者做耗时的操作

3,内存优化

防止出现内存泄漏(1,引用static成员变量 – 尽量不要引用2,单例模式 3,帧动画—及时释放掉动画)

一般出现oom 我们可以通过MAT进行分析

4,ANR

android主线程如果做耗时操作 超过5秒会出现application not response,程序无响应,一般排查可通过traces文件进行分析

可以通过一下命令获取traces文件

adb pull /data/anr/traces.txt


5,listview优化

viewholder复用,避免getview中耗时操作,快速滑动,停止异步请求,

6,bitmap优化

BitmapFactory.Options的inSampleSize

7,线程优化

线程池

8,常见优化

避免过多创建对象,常量用static final修饰,尽量不要用枚举,内存开销比整型大,适当食用弱引用,软引用,内部类采用静态内部类,缓存的使用,lrucache,disklurcache,

SparseArray是android里为 Interger,Object> 这样的Hashmap而专门写的类,目的是提高效率,其核心是折半查找函数(binarySearch)。在Android中,当我们需要定义

HashMap Integer, E> hashMap = new HashMap Integer, E> ();

时,我们可以使用如下的方式来取得更好的性能.

SparseArray sparseArray = new SparseArray ();

检查内存使用

因为android内存资源非常宝贵,有时候我们因为代码原因可能会导致内存泄漏甚至内存溢出,排查起来比较麻烦,这时我们可以借助以下方法排查

1,通过android studio的Android monitor工具,打开android monitor可以看到



右边有个Free表示当前所选择的进程剩余可用内存和Allocated 表示所选择的进程已用的内存,2则的和不能大于当前进程申请的内存 否则如果没有及时释放内存会报oom

我们分析内存时先点击左上方的initiate GC手动释放掉,以免影响分析,然后点击Dump Java Heap 获取当前hprof文件,要等获取完成以后点击start allocation track 会弹出下面这个界面



这个时候我们就可以根据他们进行内存分析了,点击绿色小按钮运行,在Analysis Results中可以看到运行结果,点开Leaked Activities可以查看导致内存泄漏的地方如下



下面就可以根据代码提示进行分析内存了,

2,通过mat插件进行分析

首先通过android studio的captures导出一份mat可以识别的prof文件



然后通过eclipse file –> open file 打开刚刚导出的prof文件,便可以进行内存分析了(前提eclipse装了mat插件)



一般我们最好先通过android monitor中的memory来查看有没有突然直线上升的地方,可以快速定位是否会发生内存泄漏
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 性能优化