上一篇文章《》我们描写叙述了uitautomator從命令行执行到载入測试用例执行測试的整个流程过程中我们也描写叙述了UiAutomatorBridge这个类的重要性,说它相当于UiAutomation的代理(我们都知道UiAutomator是通过UiAutomation和AccessibilityService进行連接然后获取界面空间信息和注入事件的).那么今天開始我们就环绕这个类以及跟它有关系的类进行进一步的分析。
这一章节我们会先看UiAutomatorBridge的總体框架往后我会编写其它文章通过一些详细的样例把它们串起来。由于我的mackbook pro上没有安装类图软件所下面图是手画的
往下我们就去初步描写叙述下UiAutomatorBridge跟每个相关的类的关系。
一旦UiAutomator工具须要通过UiAutomatorBridge获取界面或者注入事件的时候就会调用该成员变量.比方以下这个非常关键的去獲取当前界面的Root Node的方法:
UiAutomatorBridge是一个抽象类,里面的方法有下面几个:
从中能够看到这些动过都是须要通过UiAutomation来运行的但也有一些动作是不须偠用UiAutomation运行的,所以我相信google是为了代码清晰和可维护性提供了子类ShellUiAutomatorBridge来专门处理那些不须要用到UiAutomation的情况,比方下面的isScreenOn方法就不须要用到UiAutomation,而是矗接用PowerManager服务来推断当前屏幕是否是打开的: