老李推荐:第6章8节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-小结
本章我们重点围绕处理网络过来的命令的MonkeySourceNetwork这个事件源来阐述学习Monkey是如何处理MonkeyRunner过来的命令的。以下总结下MonkeyRunner从启动Monkey开始到如何处理完成一个命令的流程总结如下:
- MonkeyRunner通过ADB发送shell命令”monkey --port 12345”来启动Monkey
- Monkey启动运行进入runMonkeyCycles方法来循环获取并执行事件
- runMonkeyCycles方法首先根据启动命令行参数”--port”判断需要初始化MonkeySourceNetwork事件源来处理网络过来的命令
- 初始化事件源后,runMonkeyCycles调用事件源的getNextEvent来尝试获取一个事件来执行
- 事件源在尝试获得一个事件的时候先去命令队列查看里面有没有事件,有的话就直接返回给runMonkeyCycles执行进行事件注入,没有的话就继续往下走:
- 从与Monkey网络客户端连接的Socket端口获得一行命令字串
- 将该命令字串的命令解析出来,然后参考COMMAND_MAP获得该命令对应的命令翻译对象
- 调用该命令翻译对象的translateCommand方法来根据命令和命令参数建立对应的事件对象
- 将该事件加入到命令队列
- 进入runMonkeyCycles的下一个循环来获取事件执行
最后请看下面的流程图对整个命令获取,翻译,建立事件,注入事件的流程的描述:
图6-8-1 网络事件处理流程图