卡顿介绍及优化工具选择

207 阅读1分钟

背景介绍

很多性能问题不易被发现,但是卡顿很容易被直观感受

卡顿问题难以定位

卡顿问题难在哪里

产生原因错综复杂:代码、内存、绘制、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());