自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CharmingWong的博客

分享技术

  • 博客(18)
  • 问答 (2)
  • 收藏
  • 关注

原创 Android 自动化测试及性能数据采集的 Python 脚本

写在前面本文主要介绍一个基于 uiautomator2 封装的一个 Python 库 android-catcher,该库的功能主要有对 Android 设备进行 UI 自动化测试和采集手机性能数据,适用于如列表滑动、录制视频等各种测试场景下 CPU、内存、帧率等信息的捕获,方便后续分析。 Github地址:https://github.com/CharmingW/android-catch...

2018-04-24 22:13:19 4775 3

原创 Android开源库——EventBus源码解析

前言在写这篇源码解析到一半时发现EventBus有很多高级用法是不能直接忽略的,于是回过头来写了EventBus高级用法这一篇,传送门:Android开源库——EventBus高级用法 这篇主要通过源码分析来了解EventBus的实现原理,EventBus的版本为3.1.1,主要分为三部分,也就是实现的三个步骤 1. 注册订阅者 2. 事件发布 3. 反注册订阅者话不多说,马上开始源码分析注

2017-12-23 17:05:35 750

原创 Android开源库——EventBus高级用法

前言上一篇写了EventBus的基本用法,传送门: Android开源库——EventBus使用教程 在上一篇中只是简单展示了EventBus的基本用法,其实还有很多好玩和强大的功能,那么在本篇将一步一步地去探索EventBus那些好玩又高级的用法。主要有 - Thread Mode(线程模式) - Configuration(配置) - Sticky Events(粘性事件) - Pr

2017-12-22 12:22:34 1275

原创 Android开源库——EventBus使用教程

前言EventBus这个开源库相信很多Android开发者都用过,它是greenrobot出产的,greenrobot的厉害就不用我多说了吧,它还出产过比较出名的数据库操作开源库greenDAO。 Android传统的消息传递方式一般是通过Intent、Handler、BroadcastReceiver等等来进行的,这些方式也算是简单易用,但也有许多缺点,比如说在进行消息传递时需要写大量的模板代码

2017-12-20 14:45:34 527

原创 SQL语法习题与答案

前言以下都是我在牛客网上做过的一些SQL的习题,每一道题都有答案,给大家分享一下习题&答案查找最晚入职员工的所有信息CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16)

2017-12-20 14:12:01 449

原创 SQL基础语法

查找SELECT 列名称 FROM 表名称以及SELECT * FROM 表名称Persons 表 Id LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George Fifth Avenue New York 3 Carter Th

2017-12-19 19:35:30 484

原创 Android UI——SpannableString详细解析

前言相信很多朋友在日常开发中都遇到过这样的问题:有一段文本,需要单独给它各部分文字设置不同的样式,有的文字设置为粗体,有的文字设置特殊的颜色,有的地方要加入表情,遇到数学公式还可能要设置上下标,这时候该怎么办呢? 有的人可能会说:简单,不同样式的文字就用不同的TextView,这样就可以完美解决了。先不说这个方法行不行得通,事实上,若采用这种方式,当碰上一段文字需要设置非常多的样式时,光是这一堆T

2017-12-18 22:44:41 380

原创 Git教程——高级进阶(二)

前言这次给大家带来Git进阶用法第二篇,上一篇基础篇还没看的同学可以去看看,传送门:Git教程——高级进阶(一)

2017-12-17 21:12:46 472

原创 Git教程——高级进阶(一)

前言这次给大家带来Git稍微高级一点的用法,上一篇基础篇还没看的同学可以去看看,传送门:Git教程——入门基础撤销撤销工作区的修改单个文件git checkout HEAD README.md多个文件git checkout HEAD README.md SUMMARY.md所有文件git checkout HEAD .关于 checkout ,除了切换分支、撤销修改以外,还有一个很好的用法,就是快

2017-11-13 15:49:25 2068

原创 Git教程——入门基础

前言Git作为程序员必备的一个版本控制工具,本文跟大家分享一下Git的最基础用法 注:本文涉及到的所有命令均在 Git Bash 下执行配置设置名称git config --global user.name xxx设置邮箱git config --global user.email xxx@gmail.com初始化创建仓库目录mkdir TestRepo进入仓库目录cd TestRepo初始化仓库

2017-11-10 15:16:32 428

原创 Android异步消息机制-深入理解Handler、Looper和MessageQueue之间的关系

相信做安卓的很多人都遇到过这方面的问题,什么是异步消息机制,什么又是Handler、Looper和MessageQueue,它们之间又有什么关系?它们是如何协作来保证安卓app的正常运行?它们在开发中具体的使用场景是怎样的?今天,就让我们来揭开这几个Android异步消息机制中重要角色的神秘面纱。一、写在前面为什么要学习Android异步消息机制?和AMS、WMS、View体系一样,异步消息机制是A

2017-10-14 19:07:19 513

原创 日常分享 -(Chrome)标签页背景插件

今天给大家分享 Chrome 浏览器上一款很好用的插件 Momentum安装之后,当打开 Chrome 浏览器时或者一个新标签时,就会显示如下画面每天更换一张超清大图作为背景,还会显示时间,天气,以及向浏览器主人的问候语,非常赏心悦目最最重要的是,还有一个允许你以 TODO LIST 形式记录下当天的要事的功能每当你打开浏览器,都会看到 TODO 的提醒是不是很养眼,还能够提高工作效率你还可以在左下

2017-09-10 21:12:55 2706

原创 日常分享 -(Android)混淆导致断点调试失败

又到了分享时间~~~φ(゜▽゜*)♪做 Android 开发有一定时间的同学,相信都遇到过以下问题在调试的时候,想打个断点看下运行状态,以 debug 方式运行结果发现死活都没有运行到断点处,但看应用的运行状态,明明应该会打上断点啊,这是为什么捏T_T反复多次,还是如此,老大在催了,还是没调出来,气得都想把价值九块九的键盘砸了╰_╯这个时候不妨抽根烟冷静一下,或者先来把王者荣耀,将这些烦恼抛在脑后回

2017-09-10 21:12:11 2484 1

原创 Android-monkey测试fd泄露

最近测试给提了一个bug,原因是在跑monkey的时候应用崩溃了,异常信息显示FD_SIZE 超过了系统的限制也就是文件句柄泄露了,系统默认的文件句柄限制为1024于是今天试着跑了一次monkey,期间然后进入shell中,使用命令ps | grep 进程关键字过滤出进程信息,找到pid,例如 12345,再使用命令ls -l /proc/12345/fd列出进程文件句柄占用状态在跑monkey的过

2017-09-10 21:11:24 991

原创 Android触摸事件传递机制

在安卓开发中会时常碰到滑动冲突的情况,比如有一个水平滑动的 ViewPager 里面有 Fragment, Fragment 里面有水平滑动的 ViewGroup,当你的手指在屏幕水平滑动时,就会发生冲突,那怎么 解决这种冲突呢,首先开发者需要对 Activity、ViewGroup、View 的事件传递机制有个很好的认识。触摸事件的类型触摸事件对应的是MotionEvent类,事件类型主要有三

2017-06-19 09:24:03 497

原创 Java集合框架经典问题——HashMap与Hashtable区别

引言 俗话说:程序 = 数据结构 + 算法,搞定数据结构就相当于搞定了一半。数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作。Java 提供了几个能有效地组织和操作数据的数据结构,这些数据结构通常称为 Java 集合框架。在平常的学习开发中,灵活熟练地使用这些集合框架,可以很明显地提高我们的开发效率,当然仅仅会用还是不够的,理解其中的设计思想与原理才能更好地

2017-05-09 20:28:16 820

原创 String、StringBuffer和StringBuilder的区别

String、StringBuffer和StringBuilder的区别类继承关系图特点String来看几个例子String s1 = "hello world";String s2 = "hello world";System.out.println(s1 == s2); 输出结果是trueString s1 = new String("hello world");String s2

2017-05-02 12:04:55 343

原创 Java重写和重载的区别

你知道Java重写和重载的区别吗,知道什么是多态性吗?不知道?没事,点进来,这里有你想要的答案!

2017-04-29 14:12:01 488

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除