Android 性能优化 - Compute优化

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 中的内容;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 性能优化的过程分两部分: 发现性能瓶颈 制定方案,解决性能问题 解决性能问题的方案需要具体情况具体分析,并没...
    未子涵阅读 2,393评论 0 51
  • 雷雁雄11月30日总结:今天早上拜访客户,下午接儿子放学。
    雷雁雄阅读 223评论 0 0
  • 转轮王做为地府的高级领导,办事还是很有效率的。不一会,地府淘宝就传来了短信。 “你拍的幽冥玻尿酸已经发送给嫦娥,现...
    可可豆子阅读 365评论 0 5
  • 辛楚睁开眼睛时发现自己正躺在一片白色的世界里,挂在上空的吊水瓶才让她意识到这是医院。 “你终于醒了”。伴随着说话的...
    sucy阅读 282评论 0 0
  • 一. 属性动画出现的原因 传统动画局限性: 作用对象局限:View 没有改变View的属性,只是改变视觉效果 动...
    liys_android阅读 290评论 0 2