美文网首页
Android 性能优化 - Compute优化

Android 性能优化 - Compute优化

作者: 老柯南 | 来源:发表于2019-04-22 19:36 被阅读0次

    Android 性能优化 - Compute优化
    当我们在主线程中执行的任务比较耗时的时候,其副作用会导致App出现卡顿。

    1:缓存策略
    2:批处理
    3:子线程执行耗时任务

    这里主要记录两个工具的使用方法, Systrace,Traceview,以及Studio 3.0 之后万能的Android profiler工具的使用方法;

    Systrace

    主要配合Trace类使用,是python 环境的命令工具,systrace命令允许您在系统级别的设备上运行的所有进程中收集和检查时序信息。它结合了来自Android内核的数据,例如CPU调度程序,磁盘活动和应用程序线程,以生成HTML报告;

    1:配合的代码主要有

     public void profileMethod() {
            Trace.beginSection("Data structures");
           ... 要检查的代码
            Trace.endSection();
        }
    

    2:进入Android sdk目录下找到systrace的目录

    /Library/Android/sdk/platform-tools/systrace
    

    3: 执行python 命令(需要python 环境),这里用的是官网的命令

    python systrace.py -o mynewtrace.html sched freq idle am wm gfx view 
        binder_driver hal dalvik camera input res
    
     // -o mynewtrace.html 是输出的名字
    // sched freq idle am wm gfx view  binder_driver hal dalvik camera input res  是要输出的category, 如果有疑问,可以使用--help里面有详细解释;
    // 一般直接使用:“ python systrace.py -a  你的包名  “ 就好
    
    
    

    4:操作细节
    执行完命令之后,要等待系统的提示在做相应的操作;

    python systrace.py -a com.example.compute
    Starting tracing (stop with enter)  // 等命令提示开始tracing的时候操作你的app,操作结束按照enter;
    

    5: 分析报告,查找指定的title
    如果你想在图中找到你指定的trace title ,应该根据线程去查找你的方法;


    分析trace

    TraceView工具

    提供一种追踪日志的图形工具,是studio自带Android device monitor 工具中的一种;
    TraceView 图表结果分析,主要分析其中取消跨度大的,比如途中红色部分,点击红色部分,顶部会弹出方法名称,以及耗时情况;如果出现了图中这种方法,那么该方法就是值得优化的;
    图形下方的信息有更多的额外信息,比如CPU的使用,方法调用的次数等等;
    这个工具缩放不是很方便,点击图中“双击复原”部分可以回到初始状态;


    image.png

    主要分析

    CPU-Profiler

    CPU-Profiler 是Android Profiler 提供的分析工具之一,主要用于分析CPU,在Studio升级到3.0 版本之后系统提供了比Android devices monitor 更好用的分析工具Android profiler;


    image.png

    图中所示CPU-Profiler生产的报告,有4中查看模式,分别是Call Chart , Flame Chart, Top Down ,Bottom up;个人感觉 Call Chart , Top Down 比较直观;
    黄色: 为系统的,不包括java jdk 中的内容;

    相关文章

      网友评论

          本文标题:Android 性能优化 - Compute优化

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