ANR从原理到解决

291 阅读1分钟

ANR

image.png

image.png

image.png

image.png

image.png

image.png

主要分析这个部分 image.png

image.png

第五部分不重要

image.png

怎么避免ANR

主要解决方案,不要在主线程中做耗时操作。 image.png

线上解决方案

使用bugly,收集错误信息。 这里要注意混淆的问题。 混淆以后,bugly会定位不准确。 需要上传“符号表” 来解决。

符号表可以通过bugly给提供的命令来生成。

image.png

常用工具

常用的工具:

  1. Systrace: Systrace 是 Android 开发者工具包(Android Developer Tools)的一部分,用于分析系统性能和应用程序性能。它可以生成包含多个系统事件的跟踪文件,并提供图形化界面以可视化分析 ANR 问题。此工具是老版本,可以用新版本替换 developer.android.google.cn/topic/perfo…

  2. Traceview: Traceview 是 Android SDK 提供的分析工具,用于分析应用程序的执行流程和性能。它可以分析 trace 文件,显示函数调用的时间线和耗时信息,帮助定位导致应用程序无响应的代码。

  3. Android Studio Profiler: Android Studio 提供了强大的 Profiler 工具,可用于分析应用程序的性能和行为。使用 Profiler,您可以捕获并分析应用程序的 CPU 使用情况、内存分配、网络请求等信息,以帮助定位 ANR 问题。

  4. MAT(Memory Analyzer Tool): MAT 是一个用于 Java 内存分析的强大工具,可以分析应用程序的内存使用情况。它可以导入和分析堆转储文件(如 HPROF 文件),帮助检测内存泄漏和优化内存使用。