Monkey是如何创建和消费事件的?

Monkey的基本用法在前面的博客中已经介绍过了,这里将介绍一下Monkey是如何创建和消费事件的,让我们更好的理解这套测试工具。
首先Monkey的入口是Monkey类中的main()方法,而main方法会执行Monkey类中的run方法,在run方法中会通过调用processOptions()方法进行相关事件比例的设置
Monkey是如何创建和消费事件的?
Monkey是如何创建和消费事件的?
设置好相关事件的比例后,就会创建对应的事件源,事件源有三种,分别是脚本,网络,随机。
Monkey是如何创建和消费事件的?
像前面介绍的通过adb shell monkey这类命令行进行测试的方式都是通过MonkeySourceRandom去产生事件,MonkeySourceRandom会根据processOptions()方法中设置的事件比例去产生对应的事件,主要是通过setFactors()方法去产生对应的事件比例,然后再调用
generateActivity()方法生成第一个事件,启动一个活动(我们的主活动)
Monkey是如何创建和消费事件的?
Monkey是如何创建和消费事件的?
设置完相应的事件比例后,run方法中会调用runMonkeyCycle()方法去产生事件,主要是通过我们的事件源的getNextEvent方法,然后再把获取到的MonkeyEvent注入到我们的设备中
Monkey是如何创建和消费事件的?

这是MonkeySourceRandom的getNextEvent方法
Monkey是如何创建和消费事件的?
getNextEvent方法中我们可以看到,如果承载事件的队列不为空,就会调用其内部的generateEvent方法
Monkey是如何创建和消费事件的?
在generateEvent()方法中会调用MonkeySourceRandom的generateRotationEvent,generateTrackballEvent,generatePointerEvent方法生成对应的事件。(详细代码可以自己看,因为比较长)

接下来是注入事件。注入事件有四种方法,不同的Event注入的方式不一样,这里下一篇博客(Monkey如何注入事件)再进行讲解