第15章 Android性能优化

2018-02-22  本文已影响0人  貌似还没想好叫什么

1.布局优化

布局优化的思想很简单,就是尽量减少布局文件的层级。

优先使用LinearLayout 而不是Relativelayout,如果需要嵌套的方式实现,那还是建议使用RelativeLayout

布局优化的另一种手段是采用<include>标签,<merge>标签和ViewStub
include标签主要用于布局重用 . merge标签一般和include配合使用,他可以降低布局的层级,而ViewStub则提供了按需加载的功能,当需要的时候才会加载

15.1.2绘制优化
绘制优化是指View的onDraw方法要避免执行大量的操作,onDraw不要穿件新的布局对象,因为onDraw方法可能会被频繁调用,这样会在一瞬间产生大量的临时对象,这不仅会占用了过多的内存而写会导致系统更加频繁的gc,降低程序的执行效率,另一方面ondraw不要做耗时的任务,view的绘制频率保持60fps为最佳,这就要求每帧的绘制时间不能超过16ms(16ms = 1000 / 60)

15.1.3 内存泄漏优化

1.静态变量导致的内存泄漏
2.单例模式导致的内存泄漏
3.属性动画没有停止导致的内存泄漏

15.1.4 相应速度优化和ANR日志分析

当前一个进程发生了ANR,系统会在/data/anr目录下创建一个文件trace.txt 通过分析这个文件就能定位出ANR的原因

adb pull /data/anr/trace.txt . .代表当前目录

15.1.5ListView和Bitmap优化

实现使用ViewHolder并避免在getView中执行耗时操作
bitmap的优化主要通过bitmapFactory.options来根据需要对图片进行采样,过程中主要用到BitmapFactory.options的inSampleSize参数

15.1.6 线程优化

采用线程池

15.1.7 一些性能优化建议
1.避免过多创建对象
2.不要过多使用枚举,枚举占用空间比整形大
3.常量请使用static final 来修饰
4.使用一些android特有的数据结构,比如SparseArray和Pair等,他们有更好的性能
5.适当使用软引用和弱引用
6.采用内存缓存和硬盘缓存
7.尽量采用静态内部类,这样可以避免潜在的由于内部类而导致的内存泄漏

15.2
内存泄漏分析之MAT

15.3提高程序的可维护性

上一篇下一篇

猜你喜欢

热点阅读