Android性能优化总结

布局优化:

1、减少布局层级(ConstraintLayout, include, merge, ViewStub,
Space占位不绘制);
2、减少过度绘制(例如:不必要或重复的背景);
3、复杂的布局;
4、不必要的布局绘制(少用些功能强大的组合控件,如SuperTextView)

数据结构与算法:

ArrayList、LinkedList

<u>LinkedHashMap</u>、<u>HashMap</u>

SparseArray与ArrayMap

线程优化:

1、不要直接new线程,使用线程池、asyncTask、rxjava、kotlin协程

内存泄漏:

1、非静态内部类(包括匿名内部类)默认就会持有外部类的引用,例如Handler、Thread、AsyncTask(使用静态内部类+虚引用);
2、及时关闭或释放资源,bitmap、cursor、io/file流;
3、未取消注册或回调(eventbus\ BroadcastReceiver\disposable) ;
4、单例(如果单例对象要引用context,请使用全局的上下文对象)
5、静态变量(生命周期与应用同步)引用activity等生命周期较短的对象;
6、属性动画造成内存泄露,及时cancel,不然一直在后台播放,因为动画引用控件,控件引用activity;
7、WebView造成内存泄露

网络优化:

1、减少网络请求次数,服务器端适当做请求合并(api) 2、大量数据的加载采用分页的方式 3、网络数据传输采用GZIP压缩 4、合理使用缓存,减少不必要网络请求 5、上传图片时,在必要的时候压缩图片

6、提前或延时操作,避免扎堆

APK减包:

1、建议把cruncherEnabled设为false,然后通过tinypng手工压缩PNG图片
2、使用webp图片格式
3、混淆
4、尽量使用一套资源
5、在build.gradle文件中启用shrinkResources
6、最小化第三方库中资源的使用
7、纯色图片使用shape
8、减少native库的大小,使用armeabiV7架构下so包就可以了
9、对比选择最优库,不要引入多个类似功能的库

代码优化:

1、尽量使用局部变量
2、如果知道集合长度,尽量初始化时设置集合容量
3、字符串拼接不要使用“+”,而是使用StringBuilder
4、逻辑优化,理清程序逻辑,减少不必要的操作

工具使用:

1、Lint:检测未使用到资源,不规范的代码
2、第三方工具,LeakCanary、bugly

Android优化总结

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容