BlockCanaryX

Introduction: 🔥基于堆栈采样,使用函数火焰图的形式展示 Android Main Looper 的慢消息处理过程,定位阻塞原因
More: Author   ReportBugs   
Tags:
APM-BlockCananry-Off-

该库通过监听主线程 Looper 的消息处理时间,并通过 stackSampler 定时采样主线程的堆栈,当检测 到主线程 Looper 消息慢处理时,会通过Notification的方式告知用户,当用户点击卡顿详情时, 会跳转到一个 Web 页面,以火焰图的形式展示消息处理时间内的函数运行情况

项目说明

1.本项目的初衷是为了介绍 https://juejin.cn/post/7107137302043820039 这篇文章的内容。

功能界面

引入

dependencies {
    //引入卡顿监控实现依赖库
    implementation 'io.github.knight-zxw:blockcanary:${latestVersion}'
    //引入卡顿消息通知及相关展示 UI
    implementation 'io.github.knight-zxw:blockcanary-ui:${latestVersion}'

    // 如果你只想在 debug 包引入,不希望被引入 release 包,可以使用 debugImplementation
    //debugImplementation 'io.github.knight-zxw:blockcanary:${latestVersion}'
}

使用方法

默认情况下,blockcanary 基于 androidx 的 startup 框架,会自动进行初始化。 如果需要个性化配置,则需要通过 在 res/values 下配置资源值的方式 关闭自动化初始化

<item name="block_canary_auto_install" type="bool">false</item>

手动初始化的示例代码

// 一般在 application onCreate 阶段配置
val blockCanaryConfig = BlockCanaryConfig.newBuilder().build()
BlockCanary.install(application,blockCanaryConfig)

待支持功能/优化

  • [ ] 卡顿消息支持一键清除、过期自动清除
  • [ ] 记录消息处理消耗的 cpu 时间
  • [ ] 记录慢消息执行时,所在的前台 Activity, APP 的状态、
  • [ ] 支持 Native 抓栈能力

Stargazers over time

Stargazers over time

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools