博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
老李推荐:第14章6节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-启动ViewServer...
阅读量:4576 次
发布时间:2019-06-08

本文共 1491 字,大约阅读时间需要 4 分钟。

 

   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200。

在获得ViewServer的运行状态后,如果ViewServer还没有启动的话,HierarchyViewer的setupViewServer的下一步就会去启动ViewServer。调用的方法是DeviceBridge.startViewServer,我们进去看看:

 

190     public static boolean startViewServer(IDevice device) {  

191         return startViewServer(device, DEFAULT_SERVER_PORT);  

192     }  

代码14-6-1 DeviceBridge-startViewServer

 

传入的参数是ddmlib的Device类的一个实例,方法很简单,直接转发给startViewServer的另一个重载函数,并且增加多一个4939(DEFAULT_SERVER_PORT)的端口号作为参数:

 

193     public static boolean startViewServer(IDevice device, int port) {  

194         final boolean[] result = new boolean[1];  

195         try {  

196             if (device.isOnline()) {  

197                 device.executeShellCommand(buildStartServerShellCommand(port),  

198                         new BooleanResultReader(result));  

199             }  

200         } catch (TimeoutException e) {  

...  

208         }  

209         return result[0];  

210     }  

代码14-6-2 DeviceBridge-startViewServer重载

 

流程跟上一小节发送”adb shell service call window 3”来查询ViewServer一样,都是先去组建命令字串,然后通过Device实例把这个命令给发出去,只是命令不一样而已。这里我们看下发送的是什么命令:

 

229     private static String buildStartServerShellCommand(int port) {  

230         return String.format("service call window %d i32 %d", SERVICE_CODE_START_SERVER, port); //$NON-NLS-1$  

231     }  

代码14-6-3 DeviceBridge - BuildStartServerShellCommand

 

其中 SERVICE_CODE_START_SERVER 全局变量是定义为1,所以可以看到最终组合的命令就是”service call window 1 i32 4939”最终结合Device的executeShellCommand命令就等于是发送”adb shell service call window 1 i32 4939”命令来启动ViewServer来监听4939端口了。这个命令我们在第13章也已经见识过了。

转载于:https://www.cnblogs.com/poptest/p/5099796.html

你可能感兴趣的文章
“模板”学习笔记(5)-----编译器在处理函数模板的时候都干了啥
查看>>
教你用shell写CGI程序
查看>>
窗口 对话框 Pop Dialog 示例
查看>>
ubuntu(centos) server安装vmware tools
查看>>
数据结构之最大不重复串
查看>>
为什么要配置sdk-tools/platform-toools?
查看>>
自己动手开发更好用的markdown编辑器-07(扩展语法)
查看>>
队列的循环队列
查看>>
程序中的日期格式
查看>>
大众点评CAT错误总结以及解决思路
查看>>
从0开始学爬虫3之xpath的介绍和使用
查看>>
vim下正则表达式的非贪婪匹配
查看>>
一个python的计算熵(entropy)的函数
查看>>
spring源码学习——spring整体架构和设计理念
查看>>
模拟window系统的“回收站”
查看>>
报文格式【定长报文】
查看>>
RDLC报表钻取空白页问题
查看>>
多路电梯调度的思想
查看>>
jQuery-对Select的操作
查看>>
过滤器、监听器、拦截器的区别
查看>>