aboutsummaryrefslogtreecommitdiffstats
path: root/hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java
diff options
context:
space:
mode:
Diffstat (limited to 'hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java')
-rw-r--r--hierarchyviewer2/libs/hierarchyviewerlib/src/com/android/hierarchyviewerlib/HierarchyViewerDirector.java52
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) {