diff --git a/app/src/main/java/com/medithings/vesiscan/ble/BleManager.kt b/app/src/main/java/com/medithings/vesiscan/ble/BleManager.kt index d6b72ac..ac93476 100644 --- a/app/src/main/java/com/medithings/vesiscan/ble/BleManager.kt +++ b/app/src/main/java/com/medithings/vesiscan/ble/BleManager.kt @@ -564,6 +564,12 @@ class BleManager private constructor(private val context: Context) { stopWatchdog() connectionTimer?.let { handler.removeCallbacks(it) } connectionTimer = null + // 2026-08-11: 즉시 UI 반영 (홈 화면 "연결됨" stuck 방지). + // gatt.disconnect() 는 비동기 · onConnectionStateChange 콜백이 몇 초 뒤 도착. + // 그 사이 사용자가 goHome() 하면 isConnected.value 가 true 로 남아 UI 오동작. + // Fix: 사용자 명시적 disconnect 요청이므로 UI state 즉시 false 반영. + // 실제 GATT teardown 은 콜백에서 정상 진행 (idempotent). + isConnected.value = false bluetoothGatt?.disconnect() com.medithings.vesiscan.services.BleForegroundService.stop(context) }