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

  • 相关阅读:
    文件下载
    字符串截取
    GAMES101 作业1
    GAMES101 作业0
    常见的企业管理系统有哪些
    Spring---AoP(面向切面编程)原理学习笔记【全】
    什么是OOP(Object Oriented Programming)面向对象编程
    Spring框架之控制反转IoC(Inversion of Control)的理解
    Typora编辑器MarkDown语法
    国民经济行业分类与代码(GB/T 4754-2017、GB/T 4754-2011、GB/T 4754-2002)
  • 原文地址:https://www.cnblogs.com/hacjy/p/8249736.html
Copyright © 2011-2022 走看看