- 博客(14)
- 收藏
- 关注
原创 Monkey如何注入事件
从上篇博客我们可以知道Monkey是如何产生和消费事件,这里将讲解一下Monkey是如何注入我们生成的事件首先不同的事件,注入的方式是不一样的,总共有四种注入方式通过InputManager通过IO流通过Intent通过线程的sleep方法分别对应如下几种类MonkeyKeyEvent(通过InputManager):MonkeyFlipEvent(通过IO流):MonkeyActivityEvent(通过Intent):MonkeyThrottleEvent(通过线程的slee
2020-10-29 21:26:37 353
原创 Monkey是如何创建和消费事件的?
Monkey的基本用法在前面的博客中已经介绍过了,这里将介绍一下Monkey是如何创建和消费事件的,让我们更好的理解这套测试工具。首先Monkey的入口是Monkey类中的main()方法,而main方法会执行Monkey类中的run方法,在run方法中会通过调用processOptions()方法进行相关事件比例的设置设置好相关事件的比例后,就会创建对应的事件源,事件源有三种,分别是脚本,网络,随机。像前面介绍的通过adb shell monkey这类命令行进行测试的方式都是通过MonkeyS
2020-10-29 20:43:01 220
原创 Monkey总体设计
在大概会使用Monkey测试工具后,弟弟我尝试去阅读了下源码,阅读源码最好带着疑问去,我的疑问就是如下三个:Monkey是如何创建和消费事件的?Monkey是如何注入事件的?Monkey是如何监控异常的?这几个问题会在之后详细分析,这里先说一下Monkey的总体设计,这也是在自己看完后总结的其实从这个总体设计图可以看出其设计很好的利用了Java的两大特性继承和封装,而且在对事件进行设计时还很好的用了命令模式,此外在对异常监控上还用了观察者模式,主要是通过在Monkey中注册了一个MonkeyN
2020-10-03 16:53:18 167
原创 Monkey 的基本用法
最近在项目自测中用了一下Monkey测试工具,顺便看了一下其源码,在这里做一个分享基本语法:指定包名:平时测试命令:adb -s 192.168.50.243 shell monkey -p com.tencent.karaoketv --throttle 500 -s 605 --pct-motion 15 --pct-nav 25 --pct-majornav 30 --pct-syskeys 0 --pct-appswitch 10 --pct-touch 20 --ignore-ti
2020-10-03 16:01:25 325
原创 Kotlin学习初期总结之控制流
首先推荐一个学习Kotlin的网站:Kotlin 官方参考文档 中文版if:在Kotlin中if是一个表达式,即它会返回一个值,因此Kotlin中不需要三元运算符(条件 ? 然后 : 否则),因为普通的 if就能胜任这个角色(if 作为表达式,该表达式需要有else分支)val max = if (a > b) a else bif 的分支可以是代码块,最后的表达式作为该块的值val max = if (a > b) { print("Choose a")
2020-07-28 20:32:36 74
原创 Kotlin学习初期总结之变量
首先推荐一个学习Kotlin的网站:Kotlin 官方参考文档 中文版变量:Val: 定义只读局部变量使用关键字val定义。只能为其赋值一次。Var:可重新赋值的变量使用var关键字。Kotlin提供了一组内置类型:声明如下:Val i: Int = 1;也可以这样(直接在该值后加L):val oneLong = 1L对于以小数初始化的变量,编译器会推断为 Double 类型。 如需将一个值显式指定为 Float 类型,请添加 f 或 F 后缀。 如果这样的值包含多于 6~7 位十
2020-07-24 17:15:21 249
原创 实现进度带光晕的ProgressBar
上一篇文章介绍了如何用xml及Java代码实现progressBar的双重背景,这次我想介绍一下如何实现进度带光晕的ProgressBar。在开始自定义ProgressBar之前,我想介绍一下Paint下实现毛玻璃效果的方法setMaskFilter:MaskFilter setMaskFilter (MaskFilter maskfilter)设置或清除maskfilter对象,画笔设置BlurMaskFilter 可以画出毛玻璃效果,具体效果与BlurMaskFilter 有关使用方法:mPai
2020-07-24 16:01:10 404
原创 自定义Drawable之progressBar的双重背景实现
说到自定义Drawable,大家一定都会想到使用xml实现,网上Java代码实现的方式也很少,今天我来介绍progressBar的双重背景的xml和Java实现XML实现:首先是我们的布局文件<?xml version="1.0" encoding="utf-8"?><RelativeLayout android:id="@+id/layout" android:layout_width="match_parent" android:layout_height="m
2020-06-09 22:46:52 517
原创 自定义View之Paint和Canvas
学了自定义View,一直都想整一篇关于自定义View流程中涉及的知识的博客,如下是自定义View的流程,今天将简单说一下onDraw中涉及到的两个类Paint和Canvas。自定义属性的声明与获取 分析需要的自定义属性 在res/values/attrs.xml中定义声明 在layout xml 中进行使用 在View的构造方法中进行获取测量onMeasure绘制onDraw状态的存储与恢复 重写onSaveInstanceState 重写onRestoreInstance
2020-06-09 21:26:09 194
原创 android:configChanges 在横竖屏切换时对生命周期的影响
今日在阅读了一篇关于Activity的文章,对android:configChanges这个属性在横竖屏切换时对生命周期的具体影响产生了兴趣,原文链接:Activity 的 36 大难点,你会几个?「建议收藏」其中对android:configChanges的分析中有句话引起了我的注意:不设置 Activity 的 android:configChanges 时,切屏会重新调用各个生命周期,...
2020-04-02 10:38:54 483
原创 计网常见面试问题总结
全文布局概况是OSI模型和TCP/IP模型,TCP和UDP,HTTP和HTTPS及一些拓展,文章问题由个人在刷面经中遇到,熟记能解决大概90%的计网基本面试问题,表述方面如有问题欢迎评论区指出OSI七层模型的作用:应用层:能够产生流量,能与用户交互的的应用程序表示层:加密 压缩,开发人员会话层:服务和客户端建立的会话 查木马 netstat -nb传输层:可靠传输:建立会话 不可靠传输 ...
2020-03-19 15:17:31 8474 2
原创 腾讯WXG客户端面经分享(一面+二面凉经)
3.14-腾讯WXG客户端一面:上来三个题一个小时:设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。insert(val):当元素 val 不存在时,向集合中插入该项。remove(val):元素 val 存在时,从集合中移除该项。getRandom:随机返回现有集合中的一项。每个元素应该有相同的概率被返回定两个非空链表来代表两个非负整数。数字最高位位于链表开始...
2020-03-19 14:18:12 1559
原创 FrameLayout, LinearLayout, ReativeLayout怎么做到View在右下
实践出真知,不管什么问题,大家最好亲自动手映象才会更加深刻,就像是标题中的这个问题,相信大家都觉得这个问题十分简单,但是却很难表达出来,具体实现的布局文件代码如下:ReativeLayout中的实现:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="htt...
2020-02-12 13:43:40 2939
原创 矩形覆盖:递归和迭代实现
矩形覆盖题目:我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?题目来自《剑指Offer》,经过跳台阶和变态跳台阶的摧残,我发现这种题目就是找规律的过程,知道了怎么个规律之后,一切就好说了首先你可以举例子从n比较小的时候去发现规律,但是从n为5开始,要完整的列出所有的方法,思维难度已经开始提升了一个档次,不过你可以从前...
2020-01-22 18:51:35 3115 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人