• Stars
    star
    443
  • Rank 98,504 (Top 2 %)
  • Language
    Kotlin
  • License
    Apache License 2.0
  • Created over 2 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🔥基于堆栈采样,使用函数火焰图的形式展示Android Main Looper的慢消息处理过程,定位阻塞原因

BlockCananry Maven Central

该库通过监听主线程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

More Repositories

1

LancetX

🔥🔥饿了么开源的 字节码插桩框架 lancet的增强版本,修复了一些Bug,并基于ByteX提高编译速度。支持以下特性:1.插桩功能分组,独立开关配置 2.更多字节码修改能力
Java
283
star
2

Awesome-APM

客户端(Android/iOS) APM相关博客收藏
112
star
3

Sliver

字节跳动sliver 采集Java函数栈实现
C++
93
star
4

SpWaitKiller

解决 Sharedpreferences 造成的主线程阻塞问题,避免应用因此造成ANR问题,降低ANR率
Java
87
star
5

AppOptimizeFramework

AppOptimizeFramework
C++
75
star
6

CpuProfiler

实现高版本Android 的进程CPU使用率、CPU使用率检测,监控异常CPU使用的线程,并记录异常阶段的堆栈信息
Kotlin
30
star
7

NewAwHealth

重新架构
Java
8
star
8

MiniRetrofit

循序渐进,从零开始手写一个Mini的Retrofit框架
Java
8
star
9

turbo

Android 线程收敛SDK, 通过编译期字节码插桩 + 运行时start函数代理,将线程任务转化到线程池运行
Java
7
star
10

aweasome_learning

开发中常见的问题解决及功能实现
Python
5
star
11

AndroidTips

分享Android开发中的小Tip,包括开源库、工具、代码、架构选型等
4
star
12

knightboost-apm-android

moonlight apm Android端实现
Kotlin
4
star
13

effective-dart-cn

effective dart 中文版
3
star
14

moonlight

移动端中台服务
Java
2
star
15

gradle-module-kit

一个gradle项目的模块管理工具
2
star
16

CalendarView

calendarview
Java
2
star
17

-

一些小的项目
HTML
2
star
18

artso

保存各个版本的art.so 以及导出的符号
2
star
19

nimdanoob.github.io

HTML
1
star
20

growup

学习记录
1
star
21

AndroidEfficientSamples

Android 常用库使用示例
Java
1
star
22

Android-Camera-filter

Android 视频录制 混音 以及 美化效果的demo
1
star
23

ObserverDemo

基于观察者模式,在Android程序中传递消息的实践
Java
1
star
24

X-RollViewPager

Java
1
star
25

knightboost-frontend

knightboost 平台前端
TypeScript
1
star