一、内存优化
1、内存泄露
资源没有及时释放,线程启动后要销毁,service启动后使用完毕要取消注册,BroadcastResver注
册后不使用要取消注册,尽量使用弱引用
2、oom(内存溢出)
要求的内存超过限制.避免方法:使用软引用或弱引用(根据对象是否经常使用来判断选择,
经常使用用软引用,不被经常使用用弱引用)
3、内存抖动
频繁的进行创建销毁GC,造成内存抖动
4、enum(枚举)
不推荐不使用枚举Enum,因为枚举占用内存大。
二、图片优化
1、Drawable代替图片
Drawable代替图片,能用drawable的尽量用,纯色,圆角、渐变、椭圆、边框等。
2、.9.png图片
.9.png图片的使用:图片拉伸的时候不会失真,.9图片必须放在drawable里mipmap中无法识别.9图片。
3、inSampleSize图片大小
使用Bitmap的BitmapFactory.options中的inSampleSize变量减少加载到内存中的图片大小。
4、一套合适的图片
尽量使用一套合适的图片如xxhdpi,xhdpi.部分多套,切一套图1920x1080进行适配。
5、使用异步加载,缓存等
使用异步加载,缓存等,使用第三方Glide.因为这个图片框架是目前最好的一套网络加载框架,with里面是上下文,可以是activity,fragment等等。
6、如果Bitmap图片没有再次用到,那么进行recycled 进行回收,bitmap置为空,释放图片资源。
三、性能优化
尽量少使用或不是使用第三方框架,因为第三方可能会造成代码冗余,apk过大,依赖冲突等情况。
四、布局优化
1、merge
使用merge根布局减少层级。不是一个viewGroup,也不是一个view.对merge设置的所有属性都是无效的
2、layout
使用layout进行布局复用,如title。
3、viewStub
使用viewStub进行懒加载,是一个不可见的view,通过延迟加载布局的方式提升布局渲染,在初始化时不需要显示,在特定的条件下才进行显示,进行渲染,如:网络请求失败,列表为空,新功能和新内容的引导,view在特定情况下才显示。
网友评论