Android卡顿优化
卡顿原因
- 代码bug
- 内存占用大
- 绘制耗时
- IO磁盘空间不足
工具选择
cpu profiler
Debug.startMethodTracing(“APPProfiler”);
Debug.stopMethodTracing();
* sd卡文件路径 Android/data/packagename/files
systrace
- 监控和跟踪api的调用 ,线程运行情况,生成Html报告
- API 18+ ,推荐使用TraceCompat
- python systrac.py -t 10 [other-options] [categories]
优点
- 轻量级
- 直观查看CPU使用率
- Alerts给出修改建议
StrictMode
- 严苛模式,Android提供的一种运行是检测机制
- 方便强大
- 包含 :线程策略和虚拟机策略检测
线程策略
- 自定义的耗时调用 ,detectCustomSlowCalls()
- 磁盘读取操作 , detectDiskReads
- 网络操作 , detectNetwork
虚拟机策略
- Activity泄漏 ,detectActivityLeaks()
- Sqlite泄漏 .detectLeakedSqlLiteObjects
- 检测实例数量 ,setClassInstanceLimit()
if (DEV_MODE) {
//线程策略
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectCustomSlowCalls() //API等级11,使用StrictMode.noteSlowCode
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()// or .detectAll() for all detectable problems
.penaltyLog() //在Logcat 中打印违规异常信息 ,penaltyDialog() 或者弹框提示 penaltyDeath() 或者让App崩溃
.build());
//虚拟机策略
StrictMode.setVmPolicy(new StrictMode.VmPolicy.B