BlockCanary对主线程操作进行了完全透明的监控,并能输出有效的信息,帮助开发分析、定位到问题所在,迅速优化应用。
下面介绍配置方法。
1. 找到配置BlockCanary的jar包和arr包
blockcanary-android-1.5.0.aar
blockcanary-analyzer-1.5.0-sources.jar
2. mk文件中引入jar包和arr包
引入jar包方法:
LOCAL_STATIC_JAVA_LIBRARIES := dialerblockcanary-analyzer
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES:=\
dialerblockcanary-analyzer:libs/blockcanary-analyzer-1.5.0-sources.jar
dialerblockcanary-analyzer为jar包的别名,注意不能跟其它mk中文件里面的别名重复。
引入aar包方法:
LOCAL_STATIC_JAVA_AAR_LIBRARIES := dialerblockcanary-aar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES:=\ 、dialerblockcanary-aar:libs/blockcanary-android-1.5.0.aar
打包资源文件
LOCAL_AAPT_FLAGS := \
–extra-packages com.github.moduth.blockcanary
- 新建一个类,继承自BlockCanaryContext,实现自己的监控上下文,代码示意如下
public class AppBlockCanaryContext extends BlockCanaryContext {
// 实现各种上下文,包括应用标示符,用户uid,网络类型,卡慢判断阙值,Log保存位置等.
//简单使用只需根据需要重写下面一个方法即可(默认为1000ms)
………..
@Override
public int provideBlockThreshold() {
return 500;//阻塞时间超过多少秒发通知
}
}
- 在自定义的Application对象中初始化Block的配置信息
public class MyApplication extends Application {
public void onCreate() {
super.onCreate();
//初始化配置信息
BlockCanary.install(this, new AppBlockCanaryContext());
}
}
备注:最后在编译时发现找不到block_canary_max_stored_count字串,看名字是最多可记录的阻塞信息条数。所以在values/config.xml中加上
10000
即成功编译通过。