From 40a3a841a997d3001a2de325c80ebd1d65fe4a64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9C=E8=99=9E=E6=B8=A0=E6=88=90=E2=80=9D?= <“yuqucheng2006@qq.com”> Date: Fri, 14 Aug 2026 11:24:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=93=9D=E7=89=99?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=92=8COTA=E5=8D=87=E7=BA=A7=E7=9A=84?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E9=80=BB=E8=BE=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 蓝牙操作失败时立即隐藏加载弹窗避免卡住 2. 首页断开蓝牙时延迟刷新UI并正确刷新主页 3. OTA升级期间拦截返回操作,升级完成后恢复 --- Assets/Scripts/Bluetooth/BLECommunicationManager.cs | 3 +++ .../Scripts/UI/Pages/DeviceInfoPage/FirmwareUpdatePage.cs | 6 ++++++ Assets/Scripts/UI/Pages/HomePage/HomePageCtrl.cs | 8 ++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Assets/Scripts/Bluetooth/BLECommunicationManager.cs b/Assets/Scripts/Bluetooth/BLECommunicationManager.cs index 6d78dc1..d87ae9a 100644 --- a/Assets/Scripts/Bluetooth/BLECommunicationManager.cs +++ b/Assets/Scripts/Bluetooth/BLECommunicationManager.cs @@ -2505,6 +2505,7 @@ namespace Kill.Bluetooth if (BluetoothManager.Instance == null) { LogError("BluetoothManager.Instance 为 null"); + LoadingUI.Hide(); return false; } @@ -2513,6 +2514,7 @@ namespace Kill.Bluetooth { Log("蓝牙未初始化,尝试自动初始化..."); BluetoothManager.Instance.Initialize(); + LoadingUI.Hide(); return false; } @@ -2521,6 +2523,7 @@ namespace Kill.Bluetooth { LogError("蓝牙未连接"); ToastUI.Show("100081"); // "请先连接蓝牙设备" + LoadingUI.Hide(); // 未连接时立即隐藏Loading,避免一直转圈 return false; } diff --git a/Assets/Scripts/UI/Pages/DeviceInfoPage/FirmwareUpdatePage.cs b/Assets/Scripts/UI/Pages/DeviceInfoPage/FirmwareUpdatePage.cs index acf1317..fe9711d 100644 --- a/Assets/Scripts/UI/Pages/DeviceInfoPage/FirmwareUpdatePage.cs +++ b/Assets/Scripts/UI/Pages/DeviceInfoPage/FirmwareUpdatePage.cs @@ -172,11 +172,17 @@ namespace Kill.UI.Pages UpdateLoadingUI.Instance.Show(); uint firmwareVersion = ParseFirmwareVersion(otaData.version); OTAManager.Instance.OnTransferProgress += OnOTATransferProgress; + // OTA 传输期间清空返回事件,防止用户触发返回中断升级;传输结束恢复 + var otaBackAction = UIManager.Instance.GetBackAction(); + UIManager.Instance.ClearBackAction(); StartCoroutine(OTAManager.Instance.PerformFullUpgrade(_selectedFirmwareData, firmwareVersion, (success) => { Loom.QueueOnMainThread(() => { isUpdating = false; + // 恢复返回事件 + if (otaBackAction != null) + UIManager.Instance.RegisterBackAction(otaBackAction); if (success) { ToastUI.Show("100226"); diff --git a/Assets/Scripts/UI/Pages/HomePage/HomePageCtrl.cs b/Assets/Scripts/UI/Pages/HomePage/HomePageCtrl.cs index e9bbe89..46c632b 100644 --- a/Assets/Scripts/UI/Pages/HomePage/HomePageCtrl.cs +++ b/Assets/Scripts/UI/Pages/HomePage/HomePageCtrl.cs @@ -330,12 +330,16 @@ namespace Kill.UI.Pages isQueryingStatus = false; statusQueryQueue?.Clear(); UIManager.Instance?.ClearBackAction(); - // OpenPage 已移至 BluetoothManager.OnSelfDisconnected(全局监听 + 延迟) + // 刷新首页设备连接状态UI(延迟到主循环执行,与连接成功时保持一致) + pendingUIUpdates.Add(() => + { + deviceState?.UpdateDeviceState(hasBluetooth, hasWifi); + }); if(bluetoothDeviceInfoCoroutine!=null) { StopCoroutine(bluetoothDeviceInfoCoroutine); } - + UIManager.Instance?.OpenMainPage(UIManager.PageName.homePage); } private void OnBluetoothError(string error)