内容简介:前几年,Google 发布了关于相关学习整理可以前往可能导致内存泄露的场景很多,例如静态变量、单例模式、属性动画、AsyncTask 以及 Handler 等等,在使用的时候记得处理释放。
前几年,Google 发布了关于 Android 性能优化典范 的系列专题,帮助开发者创建更快更优秀的 Android App。课程专题不仅仅介绍了 Android 系统中有关性能问题的底层工作原理,同时也介绍了如何通过 工具 来找出性能问题以及提升性能的建议。
相关学习整理可以前往 胡凯 大佬的博客阅读,感谢他的无私分享:
- Android 性能优化典范 - 第 1 季
- Android 性能优化典范 - 第 2 季
- Android 性能优化典范 - 第 3 季
- Android 性能优化典范 - 第 4 季
- Android 性能优化典范 - 第 5 季
- Android 性能优化典范 - 第 6 季
Android 的性能优化方法
布局优化
- 删除布局中无用的组件和层级,有选择地使用性能较低的 ViewGroup,如 RelativeLayout。
-
使用
<include>
标签用于布局文件的重用,简洁高效。 -
使用
<merge>
标签和<include>
配合,可以减少布局中的层级。 -
使用
<viewstub>
标签,它具有按需加载的功能,当需要的时候才会将 ViewStub 中的布局加载到内存,提高了程序的初始化性能。
绘制优化
-
View 的
onDraw
方法中不要创建新的局部对象,因为onDraw
会被频繁调用。 -
View 的
onDraw
方法中不要做耗时的任务,要求每帧绘制时间控制在 16 ms 以内。
内存泄漏优化
可能导致内存泄露的场景很多,例如静态变量、单例模式、属性动画、AsyncTask 以及 Handler 等等,在使用的时候记得处理释放。
响应速度优化和 ANR 日志分析
- Android 规定:Activity 如果 5 秒内没有响应屏幕触摸事件或者键盘输入事件就会 ANR,而 BroadcastReceiver 如果 10 秒内没有执行完操作也会出现 ANR。
-
当一个进程发生了 ANR 之后,系统会在
/data/anr
目录下创建一个文件traces.txt
,通过分析这个文件就能定位ANR
的原因。
ListView 和 Bitmap 优化
-
ListView 优化:采用 ViewHolder 并避免在
getView
方法中执行耗时操作;根据列表的滑动状态来控制任务的执行频率;尝试开启硬件加速来使 ListView 的滑动更加流畅。 -
Bitmap 优化:主要是设置
BitmapFactory.Options
的inSampleSize
采样率属性来加载所需尺寸的图片,详情可参考 Bitmap 的加载和 Cache
线程优化
采用线程池,避免程序中存在大量的 Thread,详情可参考 Android 的线程和线程池
一些优化建议
- 避免创建过多的对象
- 不要过多使用枚举,枚举占用空间比整型大
-
常量尽量使用
static final
来修饰 -
使用一些 Android 特有的数据结构,比如
SparseArray
和Pair
等,它们都具有更好的性能 - 适当使用软引用和弱引用
- 采用内存缓存和磁盘缓存
- 尽量采用静态内部类,这样可以避免潜在的由于内部类而导致的内存泄露
内存泄漏分析 MAT 工具
Eclipse Memory Analysis Tools (MAT) 是一个分析 Java 堆数据的专业工具,用它可以定位内存泄漏的原因。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 性能优化第一课:性能指标
- 【前端性能优化】vue性能优化
- Golang 性能测试 (2) 性能分析
- 【前端性能优化】02--vue性能优化
- Java性能 -- 性能调优标准
- Java性能 -- 性能调优策略
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript and Ajax for the Web, Sixth Edition
Tom Negrino、Dori Smith / Peachpit Press / August 28, 2006 / $24.99
Book Description Need to learn JavaScript fast? This best-selling reference’s visual format and step-by-step, task-based instructions will have you up and running with JavaScript in no time. In thi......一起来看看 《JavaScript and Ajax for the Web, Sixth Edition》 这本书的介绍吧!