From 9e90294d0e6f316d1671e624c0cb3fab768d4c20 Mon Sep 17 00:00:00 2001 From: hailin Date: Thu, 5 Mar 2026 19:11:25 -0800 Subject: [PATCH] =?UTF-8?q?fix(mobile-app):=20App=E8=BF=9B=E5=85=A5?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E6=97=B6=E7=AB=8B=E5=8D=B3=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E9=81=A5=E6=B5=8B=E9=98=9F=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题:TelemetryService.dispose()从未被调用,导致forceUploadAll() 永远不执行;uploadIfNeeded()有10条最小阈值,单次会话只有2-3条 事件无法触发上传,设备信息永远留在本地队列。 修复:进入后台(paused)结束session后,立即调用uploadBatch() 绕过10条阈值,确保每次App切换到后台时都能上报事件。 Co-Authored-By: Claude Sonnet 4.6 --- .../lib/core/telemetry/session/session_manager.dart | 3 +++ .../mobile-app/lib/core/telemetry/telemetry_service.dart | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/frontend/mobile-app/lib/core/telemetry/session/session_manager.dart b/frontend/mobile-app/lib/core/telemetry/session/session_manager.dart index 13014349..8b9ecb19 100644 --- a/frontend/mobile-app/lib/core/telemetry/session/session_manager.dart +++ b/frontend/mobile-app/lib/core/telemetry/session/session_manager.dart @@ -95,6 +95,9 @@ class SessionManager with WidgetsBindingObserver { _state = SessionState.background; _endCurrentSession(); + + // session_end 写入队列后立即上传,不等待10条阈值 + _telemetryService?.flushOnBackground(); } /// 开始新会话 diff --git a/frontend/mobile-app/lib/core/telemetry/telemetry_service.dart b/frontend/mobile-app/lib/core/telemetry/telemetry_service.dart index 194ea3e3..a3d8b426 100644 --- a/frontend/mobile-app/lib/core/telemetry/telemetry_service.dart +++ b/frontend/mobile-app/lib/core/telemetry/telemetry_service.dart @@ -373,6 +373,12 @@ class TelemetryService { /// 获取设备上下文 DeviceContext? get deviceContext => _deviceContext; + /// App进入后台时调用:忽略10条阈值,立即上传队列中的事件 + Future flushOnBackground() async { + await _uploader.uploadBatch(batchSize: 50); + debugPrint('📊 [Telemetry] Flushed on background'); + } + /// App退出前调用 Future dispose() async { _configSyncTimer?.cancel();