Android性能调试方法工具集合 - 持续更新( 五 )


4 , 开发者模式:严格红闪
基本功能:检测主线程的耗时问题
打开方式:系统设置-》开发者模式-》打开严格模式 , 主线发生程耗时事件时屏幕呈现红色闪烁 。
说明:简单直观的发现主线程的耗时问题 , 如果需要进一步定位耗时方法 , 则可以使用跟踪工具进行分析;如果发现显示的耗时 , 还可参考第一篇布局优化 。
备注:也适用于APP的其它运行场景 , 但由于启动时主线程任务需要重点留给UI , 因此需要在此时重点关注 。
示例:略
5 , :
基本功能:检测各个线程的方法的耗时情况
打开方式:-》-》CPU-》Start
说明:
1 , 定位耗时的主流工具包括DDMS的/ , 的
2 , 这里根据易用性和适用场景 , 介绍
3 , 方法跟踪工具使用于所有需要定位方法耗时相应的场景
示例:
1 ,  点击开始和结束
2 ,  文件保存目录
3 ,  可以按线程查看
4 ,  可以搜索专门的方法
5 ,  查看各个方法的耗时

Android性能调试方法工具集合 - 持续更新

文章插图
六 , 扩展 1 , 代码方式
基本功能:检测主线程的耗时任务
打开方式:引入类 , 设置相关方法
说明:.3后引入 , 通过日志、等方式提醒耗时任务 , 主要针对网络、IO、数据库耗时 , 也可以自定义一些耗时监控策略 。
示例:
在初始化时设置

if (BuildConfig.DEBUG) {StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork()// detectAll() for all detectable problems.penaltyDialog() //弹出违规提示对话框.penaltyLog() //在Logcat 中打印违规异常信息.build());StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog() // .penaltyDeath().build());}
第四篇_响应优化 一 , 影响面
这里指用户交互的响应 , 影响包括滚屏、点击、弹框、动画等的交互体验 , 可以理解为主线程的操作响应 。
二 , 思路和要求
基本思路:
1 ,  理清响应任务 , 减少和避免非UI逻辑抢占主线程
2 ,  优化任务时序 , 做好线程、进程间的通信和调度
基本要求:
1 ,  慢速滚屏正常无卡顿 , UI显示无明显延迟
2 ,  快速滚屏无明显卡杜 , 每个item的控制在16ms以内
备注:
快速滚屏即使已经优化合格 , 但内存方面可能会因为GC的关系 , 导致全线程暂停而有卡顿 , 减少GC参考内存优化篇 。
三 , 检测维度
根据模块和业务的不同 , 主流面采用如下:
1 ,  上下和左右滚屏
2 ,  点击、切换等其它会提交到后台的交互
四 , 典型问题
1 ,  列表加载任务过重 , 滚屏响应较慢 , 甚至丢失部分交互
2 ,  耗时任务未起子线程 , 卡屏甚至ANR
五 , 调测工具 1 , DDMS:
基本功能:检测各个线程的方法的耗时情况 , 包括手动方式检测和代码方式检测
打开方式:
1 ,  DDMS-》
2 , 代码引入Debug.和Debug.方法