BlockCanar介绍

BlockCanary对主线程操作进行了完全透明的监控,并能输出有效的信息,帮助开发分析、定位到问题所在,迅速优化应用。其特点有:

非侵入式,简单的两行就打开监控,不需要到处打点,破坏代码优雅性。

精准,输出的信息可以帮助定位到问题所在(精确到行),不需要像Logcat一样,慢慢去找。

目前包括了核心监控输出文件,以及UI显示卡顿信息功能。仅支持Android端。

如何使用?

配置 build.gradle文件compile 'com.github.moduth:blockcanary-android:1.2.1'

// 仅在debug包启用BlockCanary进行卡顿监控和提示的话,可以这么用

debugCompile 'com.github.moduth:blockcanary-android:1.2.1'

releaseCompile 'com.github.moduth:blockcanary-no-op:1.2.1'

新建一个类,继承自BlockCanaryContext,实现自己的监控上下文,代码示意如下public class AppBlockCanaryContext extends BlockCanaryContext {

//设置卡顿判断的阙值

public int getConfigBlockThreshold() {

return 500;

}

//是否需要显示卡顿的信息public boolean isNeedDisplay() {

return BuildConfig.DEBUG;

}

//设置log保存在sd卡的目录位置public String getLogPath() {

return "/blockcanary/performance";

}

在自定义的Application对象中初始化Block的配置信息public class MyApplication extends Application {

public void onCreate() {

super.onCreate();

//初始化配置信息

BlockCanary.install(this, new AppBlockCanaryContext());

}

}

记得在清单文件的Application节点中声明android:name=”.MyApplication”

OK,环境搭建完毕,我们来模拟一个主界面卡顿的代码,用BlockCanary进行检测

在xml布局中添加一个按钮,来触发模拟卡顿的代码

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="imitateClick"

android:text="模仿UI卡顿"/>

在代码中使主线程阻塞3秒钟public void imitateClick(View view) {

SystemClock.sleep(3000);

}

OK,代码已经写完,很简单,只是在布局中添加了一个按钮,并且在按钮点击之后让主线程阻塞2秒钟

整个程序界面如下:

当我们点击按钮之后等待3秒,查看BlockCanary给我们的提示信息

至此,我们可以清晰的看到,第20行代码就是界面的元凶,我们就可以修改20行的代码来解决界面卡顿的状况.

虚拟大师 卡android界面,找出造成Android App界面卡顿的原因- BlockCanary相关推荐

  1. 如何找出标有App Store 精华,Essentials的所有软件?

    如何找出标有"App Store 精华","Essentials"的所有软件? 中国区: +"App Store 精华" site:http ...

  2. android qq弹出菜单,Android开发实现qqminihd 左右滑动菜单效果

    类型:编程工具大小:13.8M语言:英文 评分:5.5 标签: 立即下载 观察qqminihd界面,发现其界面能够左右滑动来实现两侧菜单效果. 自定义Layout:ScrollLayout.java ...

  3. android 界面代码,一个漂亮的app界面代码

    效果如下: device-2017-12-22-234223.png device-2017-12-22-234149.png 代码如下所示: xmlns:android="http://s ...

  4. ipa 上传卡在鉴权_上传app,一直卡在“正在通过 App Store 进行鉴定”

    虽然做iOS时间也不短了,不过还是第一次写简书,发现不写后来就都忘了,写写留做纪念吧. 提交审核上传ipa包时,有时候会一直卡在"正在通过App Store进行鉴定"这个地方,以下 ...

  5. android 锁屏界面弹出qq,Android锁屏状态下弹出activity,如新版qq的锁屏消息提示

    Android锁屏状态下弹出activity,如新版qq的锁屏消息提示 发布时间:2020-06-26 21:27:13 来源:51CTO 阅读:1643 作者:lp5345 在接收消息广播的onRe ...

  6. android 拍照屏幕大小,Android Camera 找出屏幕的最佳尺寸大小

    大家平时都会调用到Camera 这个API,在设置Camera.Paramera的参数的时候,有一个预览大小.也就是: setPreviewSize(int width, ing height) 这个 ...

  7. 在VMware虚拟机上使用网络测试命令找出虚拟机的IP地址

    第一种方式输入命令:ifconfig -a,然后回车,或者去掉 -a 也是可以的 第二种方式我们输入ip查询命名 ip addr 发现ens33 没有inet 这个属性,那么就没法通过IP地址连接虚拟 ...

  8. android 点击退出账号,Android应用退出登录的实现方法

    每一个app都会有一个"退出登陆"的功能,当点击退出之后需要将所有的Activity都finish掉,开始是想将栈中的所有Activity清除掉,但是没有找到方法,后来用广播实现了 ...

  9. android 不停弹出权限,Android部分手机“后台弹出界面权限”解决方案

    在前段时间的编程开发中,突然发现一个小坑的地方,其实在Android官方中并没有限制,但是在很多厂商的系统中却做了修改限制,那就是"后台弹出界面权限" 最开始发现这个问题,是因为我 ...

最新文章

  1. Vsftpd 服务的部署及优化
  2. 十二、解析H.264码流的宏块结构(上)
  3. 源码下编译APK,却是总是提示,找不到符号:SystemProperties 。。。
  4. php动态生成链接,PHP动态生成javascript文件的2个例子
  5. AlexNet网络构建与训练
  6. python查看字符编码_python如何查看字符集
  7. 如何快速清除 Ubuntu 的系统缓存
  8. linux小程序实验报告,linux 小程序分析
  9. 关于JAVA调用oracle存储过程
  10. 电信用户流失预测Telco customer churn—(基于逻辑回归)
  11. 现代浏览器(HTML5)缓存接口文档收集
  12. java编程手册_Java编程手册
  13. 软件质量保证基本知识加复习建议
  14. JavaScript笔记
  15. 笔记本计算机故障排除,笔记本电脑常见故障原因 笔记本电脑常见故障解决方法【详解】...
  16. Vyos防火墙功能配置
  17. 有线路由器加无线路由器的组网方法
  18. 5G技术能不能支持在高铁列车上的多路虚拟现实业务?
  19. 自定义NDK交叉编译链(toolchain)
  20. urlrewrite使用介绍

热门文章

  1. 2022SDUT知到/智慧树----C语言第五章测试题解(答案~)大家看清顺序
  2. K9S操作手册k8s镜像问题
  3. 小唐开始刷蓝桥(五)2016年第七届C/C++ B组蓝桥杯省赛真题
  4. 在线拼接图片工具HTML源码
  5. Windows 录屏软件哪个好?据说这几款录制工具还不错!
  6. 迪杰斯特拉算法详解+模版+例题
  7. jqueyr开发实现公众号上传永久视频页面--微信开发素材管理4
  8. 小程序云开发(一)微信登录实现
  9. 教你学会html添加自定义字体,使用@font-face和免费字体网站
  10. 基于GAN框架的时间序列异常检测研究综述