Android性能优化

2019-03-17  本文已影响0人  小的橘子

布局优化

1. 合理运用布局

布局优化的核心就是尽量减少布局文件的层级,常见的方式有:

  1. 多嵌套情况下可使用RelativeLayout减少嵌套。
  2. 布局层级相同的情况下使用LinearLayout,它比RelativeLayout更高效。
  3. 使用<include>标签复用布局
  4. 使用<merge>标签减少层级
    merge标签一般和include标签一起使用减少布局层级,merge标签最好是替代FrameLayout或者布局方向一致的LinearLayout。比如include标签所在的父容器LinearLayout布局方向是垂直的,而include所引用文件的布局也是LinearLayout并且垂直,则可以使用merge标签
  5. <ViewStub>标签懒加载
    View的GONE和INVISIBLE设置布局可见方法效率不高,系统依然会解析他们,ViewStub可以解决这个问题。ViewStub不可见不占据布局位置,其操作的布局文件,当需要显示时,调用对应方法即可,具体如下
ViewStub viewstub = findViewById(R.id.viewstub);
viewstub.inflate();
viewstub.setVisibility(View.VISIBLE);

2. 避免GPU过度绘制

  1. onDraw可能会调用多次,避免在onDraw中创建对象及做耗时操作
  2. 移除不需要的Background

内存优化

切换应用时后台APP清理机制

1. 数据结构优化

  1. 频繁字符串拼接用StringBuilder
  2. ArrayMap、SparseArray替换HashMap
  3. 内存抖动

2. 对象复用

  1. 复用系统自带资源
  2. ListView/GridView的convertView复用
  3. 避免onDraw中里面执行对象创建

3. 避免内存泄漏

内存泄漏

逻辑上对象已不使用了,但还是被其他对象引用着,导致GC没法对它回收。

4. OOM问题优化

OOM绝大部分是与图片相关

  1. 注意临时Bitmap的及时回收
  2. 单张大图可采用如下方式加载
    1.缩放比例
    2.更改为RGB.565
    3.区域加载
上一篇 下一篇

猜你喜欢

热点阅读