diff --git a/app/src/main/java/com/ouxuan/oxface/device/GateABController.java b/app/src/main/java/com/ouxuan/oxface/device/GateABController.java index cc1ba8b..6370f0c 100644 --- a/app/src/main/java/com/ouxuan/oxface/device/GateABController.java +++ b/app/src/main/java/com/ouxuan/oxface/device/GateABController.java @@ -955,6 +955,8 @@ public class GateABController { public void updateGateState(boolean gateAOpen, boolean gateBOpen, boolean udpConnected, String errorMessage) { boolean stateChanged = false; boolean shouldShowDialog = false; + boolean oldShouldShow = false; + boolean newShouldShow = false; // 检查状态是否发生变化 if (currentGateState.gateAOpen != gateAOpen || @@ -963,18 +965,14 @@ public class GateABController { stateChanged = true; // 检查是否需要触发门禁不可用弹窗 - boolean oldShouldShow = currentGateState.shouldShowUnavailableDialog(); - - // 暂时更新状态以检查新状态 - boolean tempGateAOpen = currentGateState.gateAOpen; - boolean tempGateBOpen = currentGateState.gateBOpen; - boolean tempUdpConnected = currentGateState.udpConnected; + oldShouldShow = currentGateState.shouldShowUnavailableDialog(); + // 更新状态信息 currentGateState.gateAOpen = gateAOpen; currentGateState.gateBOpen = gateBOpen; currentGateState.udpConnected = udpConnected; - boolean newShouldShow = currentGateState.shouldShowUnavailableDialog(); + newShouldShow = currentGateState.shouldShowUnavailableDialog(); // 如果从正常状态变为需要显示弹窗状态,则触发弹窗 if (!oldShouldShow && newShouldShow) { @@ -983,12 +981,14 @@ public class GateABController { } else if (oldShouldShow && !newShouldShow) { LogManager.logInfo(TAG, "门状态已恢复正常,可以隐藏门禁不可用弹窗"); } + } else { + // 即使状态没有变化,也要更新状态信息 + currentGateState.gateAOpen = gateAOpen; + currentGateState.gateBOpen = gateBOpen; + currentGateState.udpConnected = udpConnected; } - // 更新状态信息 - currentGateState.gateAOpen = gateAOpen; - currentGateState.gateBOpen = gateBOpen; - currentGateState.udpConnected = udpConnected; + // 更新其他状态信息 currentGateState.lastUpdateTime = System.currentTimeMillis(); currentGateState.errorMessage = errorMessage != null ? errorMessage : "";