/** * Implement in your project. * * @return Qualifier which can specify this installation, like version + flavor. */ public String provideQualifier(){ //区分项目版本 return"unknown"; }
/** * Implement in your project. * * @return user id */ public String provideUid(){ //用户id, 具体用处不清楚, 可能在上传的时候进行用户区分 return"uid"; }
/** * Network type * * @return {@link String} like 2G, 3G, 4G, wifi, etc. */ public String provideNetworkType(){ //文件上传的网络类型 return"unknown"; }
/** * Config monitor duration, after this time BlockCanary will stop, use * with {@code BlockCanary}'s isMonitorDurationEnd * * @return monitor last duration (in hour) */ publicintprovideMonitorDuration(){ //监视器的执行时间 return -1; }
/** * Config block threshold (in millis), dispatch over this duration is regarded as a BLOCK. You may set it * from performance of device. * * @return threshold in mills */ publicintprovideBlockThreshold(){//阻塞的临界值, 超过这个值视为一次阻塞 return1000; }
/** * Thread stack dump interval, use when block happens, BlockCanary will dump on main thread * stack according to current sample cycle. * * Because the implementation mechanism of Looper, real dump interval would be longer than * the period specified here (especially when cpu is busier). * * * @return dump interval (in millis) */ publicintprovideDumpInterval(){ return provideBlockThreshold(); }
/** * Path to save log, like "/blockcanary/", will save to sdcard if can. * * @return path of log files */ public String providePath(){ //log保存路径 return"/blockcanary/"; }
/** * If need notification to notice block. * * @return true if need, else if not need. */ publicbooleandisplayNotification(){ //阻塞是否提醒 returntrue; }
/** * Implement in your project, bundle files into a zip file. * * @param src files before compress * @param dest files compressed * @return true if compression is successful */ publicbooleanzip(File[] src, File dest){ //是否打包为zip returnfalse; }
/** * Packages that developer concern, by default it uses process name, * put high priority one in pre-order. * * @return null if simply concern only package with process name. */ public List<String&> concernPackages() { // 监控的进程, 一个项目可能为多个进程, 默认包名进程 returnnull; }
/** * Filter stack without any in concern package, used with @{code concernPackages}. * * @return true if filter, false it not. */ publicbooleanfilterNonConcernStack(){ //是否过滤 returnfalse; }
/** * Provide white list, entry in white list will not be shown in ui list. * * @return return null if you don't need white-list filter. */ public List<String> provideWhiteList(){ //白名单, 不进行监视 LinkedList<String> whiteList = new LinkedList<>(); whiteList.add("org.chromium"); return whiteList; }
/** * Whether to delete files whose stack is in white list, used with white-list. * * @return true if delete, false it not. */ publicbooleandeleteFilesInWhiteList(){ //白名单中的文件删除 returntrue; }
/** * Block interceptor, developer may provide their own actions. */ publicvoidonBlock(Context context, BlockInfo blockInfo){ //检测到阻塞信息回调处理