cas*_*orz 5 android android-anr-dialog
我正在尝试在没有任何堆栈跟踪的情况下追踪一些 ANR。我现在只想检查大量使用 UI 线程的代码的每个部分。
有没有办法绘制此图或进行某种跟踪以查看哪些方法花费的时间最长,而无需我修改大量代码?
您可以做的第一件事是启用StrictMode。这将检测主线程上运行的非 UI、可能长时间的操作。
您可以做的第二件事是分析 CPU,如上所述。您将能够看到每个线程的活动,因此您可以确定什么在哪里运行。为了获得准确的读数,请勿从 Android Studio 运行它。直接从您的代码运行它。最简单的方法是使用Debug 类,并在 Application.onCreate 处开始采样,并在应用程序关闭时完成采样。
您可以做的第三件事是观察发送到主线程循环程序的消息并评估它们。Pierre-Yves Ricau对此有一个很好的指南,您可以根据自己的流程进行调整。
之后,您可以使用自定义方法来评估代码的关键部分,例如生成您自己的跟踪。Perfetto 使用 JSON 文件,因此您可以从您怀疑导致问题的部分打印 logcat 消息,并将这些消息解析为perfetto 跟踪。
| 归档时间: |
|
| 查看次数: |
2305 次 |
| 最近记录: |