美文网首页
Android性能优化

Android性能优化

作者: 小的橘子 | 来源:发表于2019-03-17 17:37 被阅读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清理机制

    • 采用方式是LRU Cache, 维护一个App队列,如果内存不够,优先清理最近最少使用的app
    • onTrimMemory方法,会在根据当前内存状态及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.区域加载

    相关文章

      网友评论

          本文标题:Android性能优化

          本文链接:https://www.haomeiwen.com/subject/hwmumqtx.html