老李推荐:第6章6节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-命令队列...
老李推荐:第6章6节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-命令队列
事件源在获得字串命令并把它翻译成对应的MonkeyEvent事件后,会把这些事件排队放入一个由事件源维护的队列,然后其他地方如Monkey类的runMonkeyCycles方法就可以去把队列里面的事件取出来进一步进行处理了。那么这里我们先看下属于MonkeySourceNetwork内部类的命令队列的类图:
图6-6-1 命令队列类图
整个继承关系非常清晰简洁,CommandQueue接口定义了一个enqueueEvent方法来往对队列里面追加事件;实现类CommandQueueImpl实现了该方法并且额外提供了一个getNextEvent方法来从其维护的事件队列queuedEvents中获取事件。
因为这个内部接口和内部类的代码量并不多,所以我们以下列出来一并分析:
481 public static interface CommandQueue {
482 /**
483 * Enqueue an event to be returned later. This allows a
484 * command to return multiple events. Commands using the
485 * command queue still have to return a valid event from their
486 * translateCommand method. The returned command will be
487 * executed before anything put into the queue.
488 *
489 * @param e the event to be enqueued.
490 */
491 public void enqueueEvent(MonkeyEvent e);
492 };
493
494 // Queue of Events to be processed. This allows commands to push
495 // multiple events into the queue to be processed.
496 private static class CommandQueueImpl implements CommandQueue{
497 private final Queue<MonkeyEvent> queuedEvents = new LinkedList<MonkeyEvent>();
498
499 public void enqueueEvent(MonkeyEvent e) {
500 queuedEvents.offer(e);
501 }
502
503 /**
504 * Get the next queued event to excecute.
505 *
506 * @return the next event, or null if there aren't any more.
507 */
508 public MonkeyEvent getNextQueuedEvent() {
509 return queuedEvents.poll();
510 }
511 };
代码6-6-1 CommandQueue和CommandQueueImpl
497行: 实例化了一个由MonkeyEvent组成的事件队列queuedEvents
499-501: 调用队列Queue的offer方法往事件队列增加一个事件
508-510: 调用队列Queue的poll方法从事件队列中取出一个事件并返回
转载于:https://blog.51cto.com/10988776/1731426
老李推荐:第6章6节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-命令队列...相关推荐
- 老李推荐:第14章4节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-端口转发 1...
老李推荐:第14章4节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-端口转发 在初始化HierarchyViewer的实例过程中, ...
- 老李推荐:第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用 1...
老李推荐:第5章5节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 获取系统服务引用 上一节我们描述了monkey的命令处理入口函数run是如何调用optionPro ...
- 老李推荐:第3章3节《MonkeyRunner源码剖析》脚本编写示例: MonkeyImage API使用示例 1...
老李推荐:第3章3节<MonkeyRunner源码剖析>脚本编写示例: MonkeyImage API使用示例 在上一节的第一个"增加日记"的示例中,我们并没有看到日记 ...
- 老李推荐: 第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动AndroidDebugBridge 1...
老李推荐: 第8章4节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-启动AndroidDebugBridge 上一节我们看到在启动AndroidDebugBri ...
- 老李推荐:第6章1节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览 1...
老李推荐:第6章1节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览 在上一章中我们有简要的介绍了事件源是怎么一回事,但是并没有进行详细的描述.那么往下的这几个 ...
- 老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例 1...
老李推荐: 第3章2节<MonkeyRunner源码剖析>脚本编写示例: MonkeyDevice API使用示例 上一节我们学习了如何通过MonkeyRunner这个类的静态方法wait ...
- 老李推荐:第14章8节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-获取控件列表并建立控件树 1...
老李推荐:第14章8节<MonkeyRunner源码剖析> HierarchyViewer实现原理-获取控件列表并建立控件树 poptest是国内唯一一家培养测试开发工程师的培训机构,以学 ...
- 老李推荐:第8章2节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-解析处理命令行参数...
老李推荐:第8章2节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-解析处理命令行参数 MonkeyRunnerStarter是MonkeyRunner启动时的入 ...
- 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿 ...
最新文章
- 凤凰城将很快迎来无人驾驶汽车
- vue组件库(二):基于verdaccio工具npm私服搭建
- tcp/ip协议包含哪几层_TCP/IP协议的简单介绍
- ionic ui框架及creator使用帮助
- [iBoard 电子学堂][第八卷 设计任意波发生器]第一篇 iBoard 任意波发生器简介
- $* $@ $# $? $$ $! $0 $_
- python交互模式下tab键自动补全
- 使用依赖注入的ASP.NET Core 2.0用户角色基础动态菜单管理
- 这本插画式的 Python 书,刚到手就女友抢走了
- web开发人员必备的提高开发水平的20个参考手册
- 软考程序员2017下半年真题含答案解析
- iOS 集成极光推送 (swift版)
- 微信小程序实现随机抽签功能
- 绘制风向、风速玫瑰图
- VS2017下载地址
- 视觉SLAM十四讲 第7讲 (3) 相机运动估计 2D-2D/3D-2D/3D-3D
- 液晶知识 占空比(Duty)定义 偏压比(Bias)定义 及两者之间 kinglcm88|创建时间:2016年05月19日 11:53|浏览:525|评论:0 标签:液晶 占空比 Duty 偏压
- amp;#9733;色盲悖论正解!
- mmall 项目实战(一)项目初始化
- 最值得入手的五款骨传导耳机,几款高畅销的骨传导耳机
热门文章
- leetcode344. 反转字符串 史上最简单力扣题
- 《Head First设计模式》第三章笔记 装饰者模式
- C++:29 --- C++继承关系下的内存布局(下)
- Linux内核 scatterlist介绍
- Linux在超级计算机领域一统天下
- 互掐盗播风云再起 三大视频网站存和解可能
- 解决:Access denied for user ‘root’@‘localhost’(using password: YES)
- 使用 nohup 设置后台进程
- 解决: Unable to connect to zookeeper server within timeout: 5000
- 使用编辑工具快速创建实体对象的方法