背景介绍
很多性能问题不易被发现,但是卡顿很容易被直观感受
卡顿问题难以定位
卡顿问题难在哪里
产生原因错综复杂:代码、内存、绘制、IO
不易复现:当时场景强相关
CPU Profiler
Systrace
StrictMode
严苛模式,Android提供的一种运行时检测机制
方便强大,容易被忽视
包含:线程策略和虚拟机策略检测
线程策略
自定义的耗时调用,detectCustomSlowCalls()
磁盘读取操作,detectDiskReads
网络操作,detectNetwork
虚拟机策略
Activity泄露,detectActivityLeaks()
Sqlite对象泄露,detectLeakSqliteObjects
检测实例数量,setClassInstaceLimit()
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectCustomSlowCalls() //API等级11,使用StrictMode.noteSlowCode
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()// or .detectAll() for all detectable problems
.penaltyLog() //在Logcat 中打印违规异常信息
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.setClassInstanceLimit(NewsItem.class, 1)
.detectLeakedClosableObjects() //API等级11
.penaltyLog()
.build());