知是行的主意,行是知的功夫。这篇文章主要讲述《android开发艺术探索》读书笔记(十五)--Android性能优化相关的知识,希望能为你提供帮助。
接上篇《android开发艺术探索》读书笔记(十四)--JNI和NDK编程
No1:
如果<
include>
制定了这个id属性,同时被包含的布局文件的根元素也制定了id属性,那么以<
include>
指定的id属性为准
No2:
绘制优化
1)onDraw中不要创建新的局部对象
2)onDraw方法中不要做耗时的任务
No3:
内存泄露优化
【《android开发艺术探索》读书笔记(十五)--Android性能优化】场景一:静态变量导致的内存泄露:
如果静态变量持有了一个Activity,会导致Activity无法及时释放。
解决办法:1使用Application的Context。 2慎用statistic关键字
场景二:单例模式导致的内存泄露:
因为单例模式的生命周期和Application保持一致,所以如果单例模式持有了一个Activtiy,会导致Activity无法及时释放
解决方法:尽量的使用Application的全局Context。
场景三:属性动画导致的内存泄露:
因为Activity的View被动画持有,而View又持有Activity,如果动画无限循环,会导致Activity无法及时释放。
解决方法:Activity的onDestory中调用animator.cancel()来停止动画
No4:
当一个进程发生ANR了以后,系统会在/data/anr目录下创建一个文件traces.txt。
No5:
性能优化的建议
1)避免创建过多的对象
2)不要过多使用枚举,枚举占用的内存空间要比整形大
3)常量请使用static final来修饰
4)使用一些android特有的数据结构,比如SparseArray和Pair等,它们都具有更好的性能
5)适当使用软引用和弱引用
6)采用内存缓存和磁盘缓存
7)尽量采用静态内部类,这样可以避免潜在的由于内部类而导致的内存泄露
推荐阅读
- Android回顾系列——之HttpUrlConnect的使用
- Android 社区App 《窝吧》开源分享
- Android自动化测试之Monkeyrunner从零开始
- Android 测试入门之---Monkey test
- Android BitmapFactory.decodeFile(filePath, options) 返回 Null 6.0权限
- Android8.0(API26)之Activity启动流程(显示启动)
- Android ImageView setImageBitmap 不显示图片
- APP测试流程合集
- Android开发——BroadcastReceiver广播的使用