zoukankan      html  css  js  c++  java
  • Android中的性能优化

    由于手机硬件的限制,内存和CPU都无法像pc一样具有超大的内存,Android手机上,过多的使用内存,会容易导致oom,过多的使用CPU资源,会导致手机卡顿,甚至导致anr。我主要是从一下几部分进行优化:

    布局优化,绘制优化,内存泄漏优化,响应速度优化,listview优化,bitmap优化,线程优化

    布局优化:解决方式:

    1、删除无用的控件和层级。

    2、选择性能较低的viewgroup,如LinearLayout,如果可以选择Relativelayout也可以使用LinearLayout,就优先使用LinearLayout,因为相对来说Relativelayout功能较为复杂,会占用更多的CPU资源。

    3、使用标签<include/>重用布局,<Merge/>减少层级,<viewStub/>进行预加载,使用的时候才加载。

    <merge/>标签多用于替换frameLayout或者当一个布局包含另一个布局的时候,<merge/>标签用于消除师徒层次结构中多余的视图组。例如你的主布局文件是垂直的,此时如果你引入一个垂直布局的<include>.这时如果include布局使用的LinearLayout就没意义了,使用的话反而减慢你的UI表现。这时可以使用<merge/>标签优化。<merge>标签也就是排除一个布局插入另一个布局产生的多余的viewgroup.

    绘制优化

    绘制优化指view在ondraw方法中避免大量的耗时操作,由于ondraw方法可能会被频繁的调用。

    1、ondraw方法中不要创建新的局部变量,ondraw方法被频繁的调用,很容易引起GC。

    2、ondraw方法不要做耗时操作。

    内存优化:参考内存泄漏。

    响应优化

    主线程不能做耗时操作,触摸事件5s,广播10s,service20s。

    listview优化:

    1、getview方法中避免耗时操作。

    2、view的复用和viewholder的使用。

    3、滑动不适合开启异步加载。

    4、分页处理数据。

    5、图片使用三级缓存。

    Bitmap优化:

    1、等比例压缩图片。

    2、不用的图片,及时recycler掉

    线程优化

    线程优化的思想是使用线程池来管理和复用线程,避免程序中有大量的Thread,同时可以控制线程的并发数,避免相互抢占资源而导致线程阻塞。

    其他优化

    1、少用枚举,枚举占用空间大。

    2、使用Android特有的数据结构,如SparseArray来代替hashMap。

    3、适当的使用软引用和弱引用。

  • 相关阅读:
    在Visual Studio 2013中修改远程Git服务器的地址
    自定义TFS工作项“所有链接”列表中的列
    在权限受限制的AD域环境中部署SQL Server AlwaysOn高可用性
    spring boot常用注解
    在线编辑器(WangEditor)
    报表生成(POI,jquery.table2excel.js,Echarts)
    java 相关书籍介绍
    poj2456 Aggressive cows
    poj1064 Cable master
    洛谷P1396 营救
  • 原文地址:https://www.cnblogs.com/chhom/p/9371567.html
Copyright © 2011-2022 走看看