zoukankan      html  css  js  c++  java
  • Android性能优化的一些建议

    . 布局优化:

    1、使用层级少的布局,LinearLayout和FrameLayout优于RelativeLayout;
    2、单一布局实现不了时,会进行嵌套布局,一般RelativeLayout优于嵌套布局;
    3、采用include复用布局,merge减少布局的层级,viewstub按需加载。

    . 绘制优化:

    onDraw方法要避免大量的操作
    1、避免创建新的临时对象,因为onDraw方法可能被频繁调用;
    2、不要做耗时操作或者成千上万次的循环操作等。

    . 内存泄漏优化:

    1、静态变量导致的:因为静态变量会持有当前Activity;
    2、单例模式导致的:因为单例模式的生命周期与Application一致,当它持有外部类时,可能导致内存泄漏;
    3、属性动画导致的:无限循环动画没有在onDestory中停止导致的,因为动画会持有view,view又持有Activity,从而导致Activity不能被回收;

    . 响应速度优化和ANR:

    1、核心是不在主线程做耗时操作,采用异步去实现。ANR有以下几种情况:
    (1)5s内无法响应屏幕触摸或键盘输入事件;
    (2)广播在10s内没有执行完成
    分析的话,看data/anr目录下的traces.txt

    . ListView优化:

    1、采用ViewHolder;
    2、在getView中避免耗时操作;
    3、根据滑动状态来控制任务的执行频率;
    4、尝试开启硬件加速。

    . Bitmap优化:

    1、采用BitmapFactory.Options来根据需要对图片采样,主要用到inSampleSize等参数。

    . 线程优化:

    1、线程池

    . 性能优化建议:

    1、避免创建过多的对象;
    2、不要过多使用枚举;
    3、常量请使用static final来修饰;
    4、使用一些Android特有的对象,如SparseArray和Pair等;
    5、适当使用软引用和弱引用;
    6、采用内存缓存和磁盘缓存;
    7、采用静态内部类,避免内存泄漏。

    . 内存泄漏分析工具MAT(独立版):

    1、需要内存分析文件hprof;
    2、使用Android SDK/platform-tools提供的命令hprof-conv,转换下文件格式,使其能够被MAT识别;
    3、常用的Histogram(查看不同类型的buffer的数量和占用内存的大小)和Dominator tree(把内存中的对象按照大小排序,以及他们的引用关系);
    4、内存泄漏分析主要看Dominator tree--》path to gc roots,看到引用关系。

  • 相关阅读:
    CAN总线布线规范
    使用make_ext4fs时报错,No such file or directory
    安装arm-2009q3交叉编译器后,执行No such file....
    Busybox下make menconfig报错处理!
    解决Markdown转为PDF后,尖括号不能正确显示问题。
    开发板与PC直连 交叉、直连网线做法
    BusyBox tftp使用
    STM32的flash数据页转存过程分析!
    c语言中log函数的使用!
    POJ 3667 Hotel
  • 原文地址:https://www.cnblogs.com/hacjy/p/8249736.html
Copyright © 2011-2022 走看看