1.broadcast前台超时时间为10秒,后台超时60秒
- static final int BROADCAST_FG_TIMEOUT = 10*1000;
- static final int BROADCAST_BG_TIMEOUT = 60*1000;
2.按键无响应的超时时间为5秒,测量过程中为60毫秒
- // How long we wait until we timeout on key dispatching.
- static final int KEY_DISPATCHING_TIMEOUT = 5*1000;
- // How long we wait until we timeout on key dispatching during instrumentation.
- static final int INSTRUMENTATION_KEY_DISPATCHING_TIMEOUT = 60*1000;
3.前台service无响应的超时时间为20秒,后台service为200秒
- // How long we wait for a service to finish executing.
- static final int SERVICE_TIMEOUT = 20*1000;
-
- // How long we wait for a service to finish executing.
- static final int SERVICE_BACKGROUND_TIMEOUT = SERVICE_TIMEOUT * 10;
使用 StrictMode
有助于您在开发应用时发现主线程上的意外 I/O 操作。您可以在应用级别或 Activity 级别使用 StrictMode
。
您可以使用 TraceView 在查看用例时获取正在运行的应用的跟踪信息,并找出主线程繁忙的位置。如需了解如何使用 TraceView,请参阅使用 TraceView 和 dmtracedump 分析性能。
ANR优先查看此日志, AMS在ANR发生的时候,dump相关进程(ANR的进程、systemserver、mediaserver,surfaceFinger等)的当前栈到traces.txt。需要注意的是,traces.txt是抓取的是超时后(如input超时就是5s后)的snapshot,并不一定能够真实的反应出block的点。也存在抓到主线程没有block,在idle的情况。获取traces.txt的方式:adb pull /data/anr/traces.txt
我们的logcat信息会打印在此处, 里面有较多的堆栈信息,按照日期,取出里面最新的日志。获取applogcat-log方式:adb pull /data/log/android_logs
里面会记录不同的错误信息日志, 日志命名格式为 AA_BB@CC.txt, 其中AA表示进程名,BB表示异常类型, CC为时间戳,如 system_server_anr@13457689.txt, 就表示一个ANR异常的日志文件, 找到自己对应的时间及进程的日志信息即可。此日志可作为一个线索。获取方式:adb pull /data/system/dropbox