关键代码是上面的169行,通过Device类的实例来往ADB服务器发送相应的命令来检测ViewServer是否已经在运行。

device.executeShellCommand在前面章节已经分析过了,就是用来发送”adb shell”命令的。

我们看下buildIsServerRunningShellCommand方法,看这个命令是如何组织起来的:

235     private static String buildIsServerRunningShellCommand() {  236         return String.format("service call window %d", SERVICE_CODE_IS_SERVER_RUNNING);

237     }  

代码14-5-2 DeviceBridge - buildIsServerRunningShellCommand

而全局变量 SERVICE_CODE_IS_SERVER_RUNNING 的定义是:

48     private static final int DEFAULT_SERVER_PORT = 4939;

49     // These codes must match the auto-generated codes in IWindowManager.java

50     // See IWindowManager.aidl as well

51     private static final int SERVICE_CODE_START_SERVER = 1;

52     private static final int SERVICE_CODE_STOP_SERVER = 2;

53     private static final int SERVICE_CODE_IS_SERVER_RUNNING = 3;

代码14-5-3 DeviceBridge - 全局变量示例

236行整出来的这一串不就是”service call window 3”嘛。所以结合device.sendShellCommand,事实上就是往设备发送了命令”adb shell service call window 3”,上一章我们才用它来查询ViewServer的运行状态了!

转载于:https://blog.51cto.com/10988776/1734178

第14章5节: HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态 2相关推荐

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

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

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

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

  3. 信安教程第二版-第14章恶意代码防范技术原理

    第14章恶意代码防范技术原理 14.1 恶意代码概述 261 14.1.1 恶意代码定义与分类 261 14.1.2 恶意代码攻击模型 262 14.1.3 恶意代码生存技术 263 14.1.4 恶 ...

  4. 第14章4节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-端口转发 3...

    这个处理端口转发的方法主要分3步走: 第1步:获得本地ViewServer转发端口号 第2步:通过Device类发送adb命令创建本地到ViewServer端口转发 第3步:把本地端口号和对应的设备序 ...

  5. 【重识云原生】第六章容器基础6.4.5.3节——Deployment实现原理解析

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

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

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

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

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

  8. 【数据库原理及应用】经典题库附答案(14章全)——第十四章:分布式数据库系统

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

  9. 【数据库原理及应用】经典题库附答案(14章全)——第十三章:面向对象程数据库系统

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

  10. 【数据库原理及应用】经典题库附答案(14章全)——第十二章:数据库技术新发展

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

最新文章

  1. RDKit | 通过Lipinski规则了解如何在RDKit中处理描述符
  2. Linux apache源码安装自定义Server
  3. python爬虫利器p_Python爬虫利器五之Selenium的用法
  4. Spring-MetadataReader接口
  5. 实战JavaScript:实现贪吃蛇——面向对象练习
  6. Unity2021如何设置中文模式
  7. 多元线性回归:客户价值预测
  8. Python爬虫之堆糖网图片(二)
  9. matlab 深度网络,深度信念网络matlab代码
  10. HTTP协议和web服务技术---Apche配置
  11. Kotlin: Classifier ‘Demo1‘ does not have a companion object, and thus must be initialized here
  12. spring cloud 实现服务不间断
  13. 服务器迁移需要备份哪些文件?
  14. 远驱240控制器调整参数_制冷系统高低压压力保护控制器工作原理与设定方法
  15. 读《史蒂夫•乔布斯传》(四)
  16. 正念,探寻自我觉醒之路(深度想考)
  17. Visual C++ 2010创建Ribbon界面(上)
  18. JAVA 循环语句 流程图
  19. 【软件安装】结合树莓派4B(4G)和Ubuntu20.04的GitLab服务器搭建和使用
  20. CloudCompare源码分析_八叉树(Octree)算法基础CC中的八叉树结构

热门文章

  1. [转]可爱的 Python:: 使用 itertools 模块中的组合函数
  2. 关于Linux的目次结构及干系分区成绩
  3. Windows mobile美化之-短信界面美化修改~
  4. springboot security 安全
  5. SQL查询语句中参数带有中文查询不到结果
  6. Django 一些少用却很实用的orm查询方法
  7. 2014.7.8模拟赛【笨笨当粉刷匠】|bzoj1296 [SCOI]粉刷匠
  8. Android 自动更新之状态栏下载状态和进度
  9. 使用kitti2bag和RVIZ播放KITTI数据集
  10. Spring IOP 面向切面编程