老李推荐:第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原理分析-事件源-事件源概览-命令队列...相关推荐

  1. 老李推荐:第14章4节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-端口转发 1...

    老李推荐:第14章4节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-端口转发 在初始化HierarchyViewer的实例过程中, ...

  2. 老李推荐:第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用 1...

    老李推荐:第5章5节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 获取系统服务引用 上一节我们描述了monkey的命令处理入口函数run是如何调用optionPro ...

  3. 老李推荐:第3章3节《MonkeyRunner源码剖析》脚本编写示例: MonkeyImage API使用示例 1...

    老李推荐:第3章3节<MonkeyRunner源码剖析>脚本编写示例: MonkeyImage API使用示例 在上一节的第一个"增加日记"的示例中,我们并没有看到日记 ...

  4. 老李推荐: 第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动AndroidDebugBridge 1...

    老李推荐: 第8章4节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-启动AndroidDebugBridge 上一节我们看到在启动AndroidDebugBri ...

  5. 老李推荐:第6章1节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览 1...

    老李推荐:第6章1节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览 在上一章中我们有简要的介绍了事件源是怎么一回事,但是并没有进行详细的描述.那么往下的这几个 ...

  6. 老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例 1...

    老李推荐: 第3章2节<MonkeyRunner源码剖析>脚本编写示例: MonkeyDevice API使用示例 上一节我们学习了如何通过MonkeyRunner这个类的静态方法wait ...

  7. 老李推荐:第14章8节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-获取控件列表并建立控件树 1...

    老李推荐:第14章8节<MonkeyRunner源码剖析> HierarchyViewer实现原理-获取控件列表并建立控件树 poptest是国内唯一一家培养测试开发工程师的培训机构,以学 ...

  8. 老李推荐:第8章2节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-解析处理命令行参数...

    老李推荐:第8章2节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-解析处理命令行参数 MonkeyRunnerStarter是MonkeyRunner启动时的入 ...

  9. 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例(原创)

    天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿 ...

最新文章

  1. 凤凰城将很快迎来无人驾驶汽车
  2. vue组件库(二):基于verdaccio工具npm私服搭建
  3. tcp/ip协议包含哪几层_TCP/IP协议的简单介绍
  4. ionic ui框架及creator使用帮助
  5. [iBoard 电子学堂][第八卷 设计任意波发生器]第一篇 iBoard 任意波发生器简介
  6. $* $@ $# $? $$ $! $0 $_
  7. python交互模式下tab键自动补全
  8. 使用依赖注入的ASP.NET Core 2.0用户角色基础动态菜单管理
  9. 这本插画式的 Python 书,刚到手就女友抢走了
  10. web开发人员必备的提高开发水平的20个参考手册
  11. 软考程序员2017下半年真题含答案解析
  12. iOS 集成极光推送 (swift版)
  13. 微信小程序实现随机抽签功能
  14. 绘制风向、风速玫瑰图
  15. VS2017下载地址
  16. 视觉SLAM十四讲 第7讲 (3) 相机运动估计 2D-2D/3D-2D/3D-3D
  17. 液晶知识 占空比(Duty)定义 偏压比(Bias)定义 及两者之间 kinglcm88|创建时间:2016年05月19日 11:53|浏览:525|评论:0 标签:液晶 占空比 Duty 偏压
  18. amp;#9733;色盲悖论正解!
  19. mmall 项目实战(一)项目初始化
  20. 最值得入手的五款骨传导耳机,几款高畅销的骨传导耳机

热门文章

  1. leetcode344. 反转字符串 史上最简单力扣题
  2. 《Head First设计模式》第三章笔记 装饰者模式
  3. C++:29 --- C++继承关系下的内存布局(下)
  4. Linux内核 scatterlist介绍
  5. Linux在超级计算机领域一统天下
  6. 互掐盗播风云再起 三大视频网站存和解可能
  7. 解决:Access denied for user ‘root’@‘localhost’(using password: YES)
  8. 使用 nohup 设置后台进程
  9. 解决: Unable to connect to zookeeper server within timeout: 5000
  10. 使用编辑工具快速创建实体对象的方法