前言:在开发中遇到加载图片的业务时,一不小心就会碰到oom等令人头痛的问题,在低配手机上尤其明显.以下是谷歌官方优化建议
1.避免使用常驻服务
在一个服务使用时再去启动,不用时停止,应用开发推荐使用IntentService
2.合理选择容器
针对HashMap,Android有专门优化过的容器,比如LongSparseArray<E>等
3.小心使用抽象
抽象能大大简化子类的代码,但是很多子类并不需要的代码也被放到了类里面,有隐形影响
4.用Protocol Buffers代替序列化数据
谷歌出品,必属精品
5.避免内存流失
常见的有在ondraw里面new obj()
6.移除多余的库
很多时候第三方库能大大节省我们开发代码的时间,但也要考虑到库本身是不是太大并消耗了我们的内存
7.减小apk的体积
使用webp代替png图标,能缩小40%到60%的空间;
使用AS的Analyz分析代码中没用到的资源;
代码混淆也会减小一定的体积
8.依赖注入框架选择Dagger2
谷歌描述的是不会像其他注入框架扫描代码,影响性能
9.谨慎使用外部库
互联网上常用的库,有些可能不是专为手机的操作系统设计的,我们要考量两个方面:本身大小和内存占用情况
针对图片oom,对新手来说使用记住一个公式就可以了
Picasso.with(context).fit().into(view)//Picasso2.5.2版本
这行代码会根据imageview的大小自动适配图片大小
想要深入了解的同学记住一点,就是图片分辨率太大了,想办法压缩图片;就像人耳听觉有频率限制,太高清的图片在手机上也是浪费资源,压缩后肉眼也看不出明显区别