Android卡顿优化

本文详细探讨了Android应用中卡顿的原因,包括代码bug、内存占用大、绘制耗时和IO问题,并介绍了多种工具如cpu profiler、systrace和StrictMode进行性能监控。此外,还讲解了ANR的触发条件和分析方法,以及如何通过AOP框架Lancet优化View绘制。同时,文章提出了一系列针对性的优化方案,包括列表页卡顿优化、存储优化和WebView异常处理。
摘要由CSDN通过智能技术生成

卡顿原因

  • 代码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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值