Android性能优化

来源:互联网 发布:西装牌子 知乎 编辑:程序博客网 时间:2024/05/20 18:03

最近在做实训项目的时候,发现界面总是卡顿,起初以为是手机内存不够,所以没有过多的重视这个问题,然而最近这几天发现问题越来越严重,因此不得不考虑一下优化的问题。

说到优化,我个人任务并没有什么统一的理论,在优化的过程中还是开发者的经验起主导作用。下面就简单的介绍一下我所了解的性能优化的知识。

首先说一下我遇到的界面卡顿的问题,原因是在我们的项目中有一个界面要展示大量用户的头像,而我们为了美观将显示的头像手动裁剪成了圆形,最终确定界面卡顿的原因就是因为裁剪过程的开销较大,加上图片数量太多,导致界面卡顿。最终我们的解决方案是:不采用裁剪手段,而是在原来正常的ImageView上面覆盖一个写好的Layout,这个layout是圆形的。因此与裁剪出来的效果是一样的。

com.joooonho:selectableroundedimageview:1.0.1

这个自定义的控件就是采取的这种思路。

上面的问题可以归类于布局优化。接下来我们归纳一下主要的与Android优化有关的问题。

布局优化

思想就是尽量减少布局文件的层级。可以使用性能较低的布局,比如LinearLayout、RelativeLayout、FrameLayout等。再有就是使用<include>标签、<merge>标签、ViewStub来降低布局的层级。

绘制优化

即View的onDraw()方法中避免大量的操作。

onDraw()方法不要创建心得局部对象,因为onDraw()方法会被频繁的调用,这样就可能在一瞬间产生大量的对象;

onDraw()方法不要做耗时任务,也不能做深度太大的递归和次数很多的循环

内存泄漏优化

主要需要注意:静态变量、单例模式、属性动画的使用,一些资源不使用的时候需要销毁。

ListView的优化

主要的优化手段是:使用VieHolder管理控件、不在getView()方法中处理耗时任务、然后就是要分批加载数据。

ListView的优化手段完全适用于GridView

Bitmap的优化

Bitmap的优化是一个很大的话题:主要是通过BitMapFactory提供的方法,压缩、缓存、回收等手段。

下面是一些性能优化的建议:

1.      避免创建过多的对象

2.      不要过多的使用枚举

3.      常量使用static final 来修饰

4.      尽量使用Android和Java里面内部的数据结构解决问题

5.      适当的使用软引用和弱引用

6.      灵活使用缓存

7.      尽量采用静态内部类

原创粉丝点击