Skip to content

wk1995/elapse

Repository files navigation

Elapse anr 诊断

ANR(Application Not Responding)应用程序无响应是Android中最常见的性能问题,也是难以追踪和解决的老大难问题, 一旦出现ANR, 对用户体验造成很大的影响。data/anr只能记录的是anr发生的当前时间点各个进程/线程当前堆栈,这往往并 不能帮助发现ANR的具体原因。

Elapse是为了解决ANR问题而生,它是基于Android的Handler机制,记录和回溯主线程消息队列。可以输出慢消息执行时长、调用堆栈 等关键信息。能够发现发生ANR具体细节。

接入方式

  1. 添加elapse依赖
// build.gradle

...
depenedencies {
    ...
    implementation 'com.wk.elapse:elapse:0.0.1'
    ...
}

  1. 在Application的onCreate方法中添加elapse初始化
public void onCreate() {
    ElapseOptions options = new ElapseOptions(); // 更多参数详情参考 ElapseOptions.kt
    options.slowThreshold = 300L;       // 单条记录最大时长, 连续多条消息时间总和在recordMaxDuration内的,会聚合记录在一条Msgs记录
    options.recordMaxDuration = 400;    // elapse只记录最近timeLineDuration时间内的记录,超过timeLineDuration的记录会被清除
    Elapse.init(this, options);
}
  1. 监听ANR发生时,dump出主线程消息记录
TuyaCrash.registerAnrCallback() {
    Elapse.dump();
}
  1. dump文件位置在: /sdcard/Android/data//files/elapse/elapse-dump-xxxxx.txt

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages