点击、滑动、点击home键之后获取一次ui节点
							parent
							
								
									5bcb914139
								
							
						
					
					
						commit
						e38f18a050
					
				| 
						 | 
					@ -24,7 +24,11 @@ public class GetNodeTreeThread extends Thread {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private CmdRequest request;
 | 
					    private CmdRequest request;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private boolean keepPushNode = false;
 | 
					    private boolean keepPushNode = true;  //前端是否打开了获取ui节点
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private boolean gettingNode = false;  //正在获取ui树
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private boolean longTimeGetNode = false;   //是否长时间没有点击等操作,一直获取
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final Object lock = new Object();
 | 
					    private final Object lock = new Object();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,29 +45,39 @@ public class GetNodeTreeThread extends Thread {
 | 
				
			||||||
    public void run() {
 | 
					    public void run() {
 | 
				
			||||||
        logger.info("开始获取设备【{}】的节点............................", deviceId);
 | 
					        logger.info("开始获取设备【{}】的节点............................", deviceId);
 | 
				
			||||||
        while (!isInterrupted()) {
 | 
					        while (!isInterrupted()) {
 | 
				
			||||||
            try {
 | 
					            if (keepPushNode) {
 | 
				
			||||||
                Thread.sleep(1000);
 | 
					                try {
 | 
				
			||||||
            } catch (InterruptedException e) {
 | 
					                    gettingNode = true;   //正在获取uiNode
 | 
				
			||||||
                interrupt();
 | 
					                    IosDeviceInitThread iosInitThread = IOSDeviceManager.getInstance().getIosInitThread(deviceId);
 | 
				
			||||||
                break;
 | 
					                    if (null == iosInitThread || iosInitThread.isInterrupted() || !iosInitThread.isAlive()) {
 | 
				
			||||||
            }
 | 
					                        logger.debug("设备【{}】掉线了,等一下,不要急........................", deviceId);
 | 
				
			||||||
            try {
 | 
					                        break;
 | 
				
			||||||
                IosDeviceInitThread iosInitThread = IOSDeviceManager.getInstance().getIosInitThread(deviceId);
 | 
					                    }
 | 
				
			||||||
                if (null == iosInitThread || iosInitThread.isInterrupted() || !iosInitThread.isAlive()) {
 | 
					                    UiNodeData uiNodeData = iosInitThread.getNkAgent().uiTreeNode();
 | 
				
			||||||
                    logger.debug("设备【{}】掉线了,等一下,不要急........................", deviceId);
 | 
					                    logger.debug("获取结束,nodeData空:{}", uiNodeData == null);
 | 
				
			||||||
                    continue;
 | 
					                    gettingNode = false;  //uiNode获取完毕
 | 
				
			||||||
 | 
					                    SessionUtils.sendContinuousData(session, request, uiNodeData, "获取节点树成功");
 | 
				
			||||||
 | 
					                } catch (IllegalStateException e) {
 | 
				
			||||||
 | 
					                    logger.warn("webSession已经关闭",e);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                } catch (Exception e) {
 | 
				
			||||||
 | 
					                    logger.warn("设备【{}】获取节点出了点问题,但是不影响,继续", deviceId, e);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                logger.debug("开始获取......");
 | 
					                synchronized (lock) {
 | 
				
			||||||
                UiNodeData uiNodeData = iosInitThread.getNkAgent().uiTreeNode();
 | 
					                    logger.warn("设备【{}】等待下一次获取node节点.....................", deviceId);
 | 
				
			||||||
                logger.debug("获取结束,nodeData空:{}", uiNodeData == null);
 | 
					                    try {
 | 
				
			||||||
                SessionUtils.sendContinuousData(session, request, uiNodeData, "获取节点树成功");
 | 
					                        if (longTimeGetNode) {
 | 
				
			||||||
            } catch (IllegalStateException e) {
 | 
					                            lock.wait(5*1000);
 | 
				
			||||||
                logger.warn("webSession已经关闭",e);
 | 
					                        } else {
 | 
				
			||||||
                break;
 | 
					                            lock.wait(2*1000);
 | 
				
			||||||
            } catch (Exception e) {
 | 
					                            longTimeGetNode = true;
 | 
				
			||||||
                logger.warn("设备【{}】获取节点出了点问题,但是不影响,继续", deviceId, e);
 | 
					                        }
 | 
				
			||||||
            }
 | 
					                    } catch (InterruptedException e) {
 | 
				
			||||||
            if (!keepPushNode) {
 | 
					                        interrupt();
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
                synchronized (lock) {
 | 
					                synchronized (lock) {
 | 
				
			||||||
                    logger.warn("设备【{}】等待获取node节点.....................", deviceId);
 | 
					                    logger.warn("设备【{}】等待获取node节点.....................", deviceId);
 | 
				
			||||||
                    try {
 | 
					                    try {
 | 
				
			||||||
| 
						 | 
					@ -96,6 +110,8 @@ public class GetNodeTreeThread extends Thread {
 | 
				
			||||||
    public void startGetNodeTree(CmdRequest request) {
 | 
					    public void startGetNodeTree(CmdRequest request) {
 | 
				
			||||||
        this.request = request;
 | 
					        this.request = request;
 | 
				
			||||||
        this.keepPushNode = true;
 | 
					        this.keepPushNode = true;
 | 
				
			||||||
 | 
					        this.gettingNode = false;
 | 
				
			||||||
 | 
					        this.longTimeGetNode = false;
 | 
				
			||||||
        synchronized (lock) {
 | 
					        synchronized (lock) {
 | 
				
			||||||
            logger.debug("设备【{}】开始获取节点树...................", deviceId);
 | 
					            logger.debug("设备【{}】开始获取节点树...................", deviceId);
 | 
				
			||||||
            lock.notify();
 | 
					            lock.notify();
 | 
				
			||||||
| 
						 | 
					@ -106,4 +122,20 @@ public class GetNodeTreeThread extends Thread {
 | 
				
			||||||
    public void exitGetNodeTree() {
 | 
					    public void exitGetNodeTree() {
 | 
				
			||||||
        interrupt();
 | 
					        interrupt();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void getOnceNodeTree() {
 | 
				
			||||||
 | 
					        longTimeGetNode = false;
 | 
				
			||||||
 | 
					        if (keepPushNode) {
 | 
				
			||||||
 | 
					            if (gettingNode) {
 | 
				
			||||||
 | 
					                logger.warn("设备【{}】正在获取uiNode.............", deviceId);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                synchronized (lock) {
 | 
				
			||||||
 | 
					                    logger.debug("设备【{}】操作了,获取一次节点树...................", deviceId);
 | 
				
			||||||
 | 
					                    lock.notify();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            logger.warn("设备【{}】前端已经关闭了uiNode,无需获取.............", deviceId);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -615,6 +615,10 @@ public class IosWindowsAndLinuxMessageHandlerThread extends AbstractIosMessageHa
 | 
				
			||||||
                SessionUtils.sendFailureMessage(session, request, "热键[" + key + "]不存在");
 | 
					                SessionUtils.sendFailureMessage(session, request, "热键[" + key + "]不存在");
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (null != nodeTreeThread && nodeTreeThread.isAlive()) {
 | 
				
			||||||
 | 
					            logger.debug("手机【{}】操作了一次,准备获取node节点.................", phoneEntity.getUdid());
 | 
				
			||||||
 | 
					            nodeTreeThread.getOnceNodeTree();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        SessionUtils.sendSuccessData(session, request, null, "热键处理成功");
 | 
					        SessionUtils.sendSuccessData(session, request, null, "热键处理成功");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -654,6 +658,10 @@ public class IosWindowsAndLinuxMessageHandlerThread extends AbstractIosMessageHa
 | 
				
			||||||
            handleWatch.reset();
 | 
					            handleWatch.reset();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        logger.debug("抬起实际位置x:{},y:{}", point.getX(), point.getY());
 | 
					        logger.debug("抬起实际位置x:{},y:{}", point.getX(), point.getY());
 | 
				
			||||||
 | 
					        if (null != nodeTreeThread && nodeTreeThread.isAlive()) {
 | 
				
			||||||
 | 
					            logger.debug("手机【{}】操作了一次,准备获取node节点.................", phoneEntity.getUdid());
 | 
				
			||||||
 | 
					            nodeTreeThread.getOnceNodeTree();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        SessionUtils.sendSuccessData(session, request, null, "抬起成功");
 | 
					        SessionUtils.sendSuccessData(session, request, null, "抬起成功");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue