浅谈安卓性能优化

Android的性能优化,主要有以下几个有效的优化方法:

1、布局优化

布局优化:布局优化主要就是要尽量的减少布局嵌套,布局嵌套的少了,Android绘制时的工作量就减少了,所以性能也就提高了。
首先,如果布局中既可以使用LinearLayout和RelativeLayout来布局的话,优先选择LinearLayout来进行布局。因为Relative布局需要花费更多的CPU时间。FrameLayout和LinearLayout布局都是比较高效的,当然,也得具体情况具体分析了。
然后对于重复使用的标题栏可以使用include来复用布局,这样也可以提高开发效率。

2、绘制优化

绘制优化是指View的onDraw方法要避免执行大量的操作,这主要体现在两个方面:1、onDraw中不要创建新的局部对象。一定需要注意避免在这里做创建对象的操作,因为他会迅速增加内存的使用,而且很容易引起频繁的gc,甚至是内存抖动。2、onDraw方法中不要去做耗时的任务,因为这样会使View的绘制过程不流畅。

3、内存泄漏优化

第一、尽量避免写出内存泄露的代码。
第二、利用像leakcanary来找出潜在的内存泄露,然后解决它。
什么是内存泄露 memory leak:是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
内存泄露原因:
一、Handler 引起的内存泄漏。
解决:将Handler声明为静态内部类,就不会持有外部类SecondActivity的引用,其生命周期就和外部类无关,
如果Handler里面需要context的话,可以通过弱引用方式引用外部类
二、单例模式引起的内存泄漏。
解决:Context是ApplicationContext,由于ApplicationContext的生命周期是和app一致的,不会导致内存泄漏
三、非静态内部类创建静态实例引起的内存泄漏。
解决:把内部类修改为静态的就可以避免内存泄漏了
四、非静态匿名内部类引起的内存泄漏。
解决:将匿名内部类设置为静态的。
五、注册/反注册未成对使用引起的内存泄漏。
注册广播接受器、EventBus等,记得解绑。
六、资源对象没有关闭引起的内存泄漏。
在这些资源不使用的时候,记得调用相应的类似close()、destroy()、recycler()、release()等方法释放。
七、集合对象没有及时清理引起的内存泄漏。
通常会把一些对象装入到集合中,当不使用的时候一定要记得及时清理集合,让相关对象不再被引用。

4、响应速度优化

响应速度的优化的核心思想就是避免在主线程中做耗时操作。如果有耗时操作,我们可以通过开启子线程来执行操作。如果子线程要更新UI,就可以通过Handler和AsyncTask来进行处理。

5、ListView/RecyclerView及Bitmap优化

1、首先可以通过ViewHolder来提高效率。
2、异步加载:耗时的操作放在异步线程里。
3、ListView/RecyclerView的滑动时停止加载和分页加载。
4、然后Bitmap可以通过对图片进行压缩,因为图片太大会导致出现OOM情况的出现

6、线程优化

线程优化的方法就是采用线程池,避免程序中存在大量的Thread。线程池可以重用内部的线程,从而避免了线程的创建和销毁所带来的性能开销。

7、其他性能优化

1、避免过度的穿件对象
2、注册 和解注册要搭配使用
3、尽量使用静态内部类。这样可以避免潜在的由于内部类导致的内存泄漏
4、安装包优化,可以采取像图片处理工具对PNG图片做压缩处理。

这些只是一部分,剩下的再慢慢更新。。。。。。

你可能感兴趣的:(Android)