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,看到引用关系。

  • 相关阅读:
    JDBC遇到向ORACLE数据库表执行插入操作时,报错“列在此处不允许”
    关于对称加密和非对称加密以及签名,认证和证书的理解
    .net framework 各版本区别
    数据库设计三大范式
    业务系统设计
    修改 Windows 服务器默认远程端口3389
    iis读取不到本地证书问题 提示已经导入成功
    HTTPS 建立连接的详细过程
    使用ServiceStack构建Web服务
    转-微信支付(公众号支付JSAPI)
  • 原文地址:https://www.cnblogs.com/hacjy/p/8249736.html
Copyright © 2011-2022 走看看