在获得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重载