diff options
Diffstat (limited to 'hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java')
-rw-r--r-- | hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java | 52 |
1 files changed, 37 insertions, 15 deletions
diff --git a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java index b63fba8..65cb24f 100644 --- a/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java +++ b/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java @@ -77,27 +77,49 @@ public abstract class HierarchyViewerDirector implements IDeviceChangeListener, DeviceBridge.setupDeviceForward(device); if (!DeviceBridge.isViewServerRunning(device)) { if (!DeviceBridge.startViewServer(device)) { - DeviceBridge.removeDeviceForward(device); - Log.e(TAG, "Unable to debug device " + device); + // Let's do something interesting here... Try again in 2 + // seconds. + executeInBackground(new Runnable() { + public void run() { + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + Log.e(TAG, "Unable to debug device " + device); + DeviceBridge.removeDeviceForward(device); + return; + } + if (!DeviceBridge.startViewServer(device)) { + Log.e(TAG, "Unable to debug device " + device); + DeviceBridge.removeDeviceForward(device); + } else { + loadViewServerInfoAndWindows(device); + } + } + }); return; } } - executeInBackground(new Runnable() { - public void run() { - ViewServerInfo viewServerInfo = DeviceBridge.loadViewServerInfo(device); - Window[] windows = DeviceBridge.loadWindows(device); - ComponentRegistry.getDeviceSelectionModel().addDevice(device, windows); - if (viewServerInfo.protocolVersion >= 3) { - WindowUpdater.startListenForWindowChanges(HierarchyViewerDirector.this, - device); - focusChanged(device); - } - } - }); - + loadViewServerInfoAndWindows(device); } } + private void loadViewServerInfoAndWindows(final IDevice device) { + executeInBackground(new Runnable() { + public void run() { + ViewServerInfo viewServerInfo = DeviceBridge.loadViewServerInfo(device); + if (viewServerInfo == null) { + return; + } + Window[] windows = DeviceBridge.loadWindows(device); + ComponentRegistry.getDeviceSelectionModel().addDevice(device, windows); + if (viewServerInfo.protocolVersion >= 3) { + WindowUpdater.startListenForWindowChanges(HierarchyViewerDirector.this, device); + focusChanged(device); + } + } + }); + } + public void deviceDisconnected(IDevice device) { ViewServerInfo viewServerInfo = DeviceBridge.getViewServerInfo(device); if (viewServerInfo == null) { |