ANR(应用程序未响应) 是指Android应用程序无响应,一般容易导致程序的卡死、崩溃等问题。出于性能优化和用户体验考虑,我们通常需要记录程序的ANR信息并进行分析。而在Android 8.0 Oreo 之后,ANR报告的机制发生了变化。
在Android 8.0 Oreo 之前,ANR信息是通过/data/anr/traces.txt文件记录的。而在Android 8.0 Oreo之后,ANR文件存放位置已经变更为/data/user/0/com.android.systemui/cache/traces。同时,在Android 8.0 Oreo之后,ANR文件存储时限也从之前的5秒提高至了20秒。
以下是获取ANR文件路径的代码示例:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
File tracesFile = new File("/data/user/0/com.android.systemui/cache/traces");
if (tracesFile.exists()) {
//do something
}
} else {
File tracesFile = new File("/data/anr/traces.txt");
if (tracesFile.exists()) {
//do something
}
}