HierarchyViewer源代码理解(一)

注:文章是建立在http://blog.csdn.net/liguangzhenghi/article/details/8363911的基础上理解和扩充,所以首先先表示感谢


1.程序的入口为HierarchyViewerApplication.java中的createContents

当程序在pc上创建时,这个函数就开始启动了

a.关于代码中的mDirector,是一个HierarchyViewerDirector类对象


2.HierarchyViewerApplicationDirector.createDirector();是创建了一个HierarchyViewerDirector对象


3.mDirector.initDebugBridge();

3.1 通过DeviceBridge.java与ddmlib中的AndroidDebugBridge进行连接

3.2 AndroidDebugBridge.init(false /* debugger support */);这句话在连接的时候不能少,否则会报错

3.3 AndroidDebugBridge.createBridge(adbLocation, true);

这里的adbLocation是电脑中的adb的路径,通过public abstract String getAdbLocation();获得

createBridge后面的那个Boolean含义是,强制创建一个新的桥接,即使已经存在了一个相同位置的桥接(force creation of a new bridge even if one with the same location already exists.

3.4 创建桥接后,会返回一个已连接的桥接(a connected bridge),即AndroidDebugBridge类对象,在DeviceBridge.java中,对象被附给了sBridgeprivate static AndroidDebugBridge sBridge;


4. 获取设备(mDirector.populateDeviceSelectionModel();

4.1 sBridge可以通过getDevices()方法获得设备列表,并返回IDevice[],IDevice类的源代码可以在ddmlib中的IDevice.java查看,有一系列的get方法,比如获取屏幕截图,在populateDeviceSelectionModel()中,程序对每个设备都进行了deviceConnected(device);即对每台连接的设备都进行了一系列的处理,接下来,将对处理进行分析


4.2 DeviceBridge.setupDeviceForward(device) -- 把该设备的4939端口映射到本地端口。


4.3 DeviceBridge.isViewServerRunning(device)判断设备的ViewServer是否打开


4.4 DeviceBridge.startViewServer(device)打开ViewServer


4.5 loadViewServerInfoAndWindows(device) 

a.获取该设备ViewServer信息,比如版本信息等

b.获取该设备其所有活动的Activities(在HierarchyView源代码中,Activities总是被命名为Windows


关于 loadViewServerInfoAndWindows在下一篇文章中再进行具体解释




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值