Skip to content

gg8883/AnrWatcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

AnrWatcher

Android ANR 监测 SDK,通过异步线程心跳检测主线程卡顿,支持分级回调和日志记录。

功能

  • 主线程卡顿监测(心跳检测机制)
  • 分级 ANR 回调:轻度(3s)/ 严重(4s),阈值可自定义
  • 异步回调,不阻塞主线程
  • 可选的 ANR 日志写入(文件名前缀、存储目录均可配置)
  • ANR 日志文件查询,异步回调文件路径

引入方式

方式一:Gradle 远程依赖(推荐)

在项目根目录 settings.gradle 中添加仓库:

dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://raw.githubusercontent.com/gg8883/AnrWatcher/main/maven-repo' }
    }
}

app/build.gradle 中添加依赖:

dependencies {
    implementation 'com.anrwatcher:anrwatcher:1.0.2'
}

Sync Gradle 即可使用。

方式二:手动下载 JAR

  1. 前往 Releases 页面 下载最新版 anrwatcher.jar
  2. anrwatcher.jar 复制到你项目的 app/libs/ 目录下
  3. app/build.gradle 中添加依赖:
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}
  1. Sync Gradle 即可使用

使用方式

import com.anrwatcher.*;

// 1. 配置(lightThreshold 和 severeThreshold 不设置则默认 3秒/4秒)
AnrConfig config = new AnrConfig.Builder()
    .lightThreshold(3000)           // 可选,默认 3000ms(范围 1000~30000ms)
    .severeThreshold(4000)          // 可选,默认 4000ms(范围 1000~30000ms)
    .enableLog(true)                // 开启日志写入
    .logFilePrefix("my_anr")       // 日志文件名前缀
    .logDir(new File(getExternalFilesDir(null), "anr_logs"))  // 日志存储目录
    .maxLogSize(100 * 1024 * 1024)  // 可选,日志最大总大小,默认 100MB,超出自动清理旧文件
    .build();

// 2. 启动监测
AnrWatcher.getInstance().start(config, new AnrCallback() {
    @Override
    public void onAnrDetected(AnrInfo anrInfo) {
        // 异步线程回调,不在主线程
        Log.e("ANR", "级别: " + anrInfo.getLevel()
            + " 阻塞: " + anrInfo.getBlockTimeMillis() + "ms");
        // 获取主线程堆栈
        Log.e("ANR", anrInfo.formatStackTrace());
    }

    @Override
    public void onAnrLogFilesFound(String[] filePaths) {
        // 查找日志文件的结果回调
        for (String path : filePaths) {
            Log.d("ANR", "日志文件: " + path);
        }
    }
});

// 3. 查找已有 ANR 日志(异步回调结果)
AnrWatcher.getInstance().findAnrLogFiles();

// 4. 停止监测
AnrWatcher.getInstance().stop();

API 说明

说明
AnrWatcher 主入口,单例模式,调用 start() / stop() / findAnrLogFiles()
AnrConfig.Builder 配置构建器,设置阈值(默认3s/4s)、日志开关、文件名前缀、存储目录、最大日志大小(默认100MB)
AnrCallback 回调接口,onAnrDetected()onAnrLogFilesFound()
AnrInfo ANR 信息,包含级别、阻塞时长、主线程堆栈、线程状态
AnrLevel 枚举:LIGHT(轻度)/ SEVERE(严重)

License

MIT

About

Android ANR 监测 SDK - 异步心跳检测主线程卡顿,分级回调,日志记录

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors