Android App性能优化可以从代码,图片,布局,耗电量,App瘦身等方面来分析入手。以下主要是总结了在这几方面编码的一些建议。
代码
1.避免内存泄漏
Handler,Thread的生命周期与activity不一致
静态变量持有Activity context的引用
数据库流,网络流使用完后未关闭
2.优化数据结构
需要字符串拼接的操作时用StringBuffer(线程安全),StringBuilder替代String
执行效率 StringBuilder > StringBuffer(线程安全) > String
利用sparseArray替代HashMap
service运行周期不便于控制,容易造成service泄漏,尽量使用IntentService
3.耗时操作需要在线程中执行,避免ANR
4.正确认识强,软,弱,虚四种引用
图片
1.图片使用png无损格式,利用tinypng等软件进行压缩
2.多用xml方式绘制图片或.9图片以减小图片大小
3.设计多套分辨率图片按比例放入drawable文件夹,mdpi(160dpi基准)、hdpi(240dpi)、xhdpi(320dpi)、xxhdpi(480dpi)、xxxhdpi(640dpi)的图片load比例是2:3:4:6:8,能大大减小APP的内存占用
4.按实际大小缩放加载图片。读取BitmapFactory.Options,计算出缩放比例并设置参数inSampleSize
5.降低每个像素占用的字节,图片色彩rgb。 Bitmap.Config RGB_8888:一个像素占用4个字节,android系统使用该值做为默认值
6.缓存图片:LruCache 内存缓存算法,DiskLruCache 磁盘缓存算法
7.使用第三方库 glide(square),picasso(google),fresco(facebook)
图片占用APP内存=图片宽度 X 图片高度/((资源文件夹密度/手机屏幕密度)^2) * 色彩格式每一个像素占用字节数
LRU(Least Recently Used)近期最少使用的算法,它的核心思想是当缓存满时,会优先淘汰那些近期最少使用的缓存对象。如GridView显示大量图片时,运用二级缓存,先在内存中读取,再到磁盘读取,最后到网络上下载。
布局
1.减少代码嵌套层级。可利用约束布局constraintlayout。
2.合理使用布局标签:include(代码复用),viewstub(代码延时加载),megre(上级元素需是ViewGroup)
电量
核心是减少耗电大户功能的使用
1.减少BroadcastReceiver的使用
2.减少使用GPS
3.减少数据传输,压缩传输数据
4.减少AlarmManager使用
APP瘦身
1.优化图片占用空间
使用tinypng等工具压缩资源图片大小
多用xml方式绘制图片或.9图片以减小图片大小
2.使用Lint工具删除无用资源
3.开启代码混淆,设置shrinkResources
4.App插件化