android性能优化相关

来源:互联网 发布:武汉sdi矩阵 编辑:程序博客网 时间:2024/06/11 07:02

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来查看有没有突然直线上升的地方,可以快速定位是否会发生内存泄漏

0 0
原创粉丝点击