diff --git a/frontend/mining-app/lib/core/telemetry/session/session_manager.dart b/frontend/mining-app/lib/core/telemetry/session/session_manager.dart index a83ad1d9..03e69115 100644 --- a/frontend/mining-app/lib/core/telemetry/session/session_manager.dart +++ b/frontend/mining-app/lib/core/telemetry/session/session_manager.dart @@ -70,6 +70,8 @@ class SessionManager with WidgetsBindingObserver { _state = SessionState.foreground; _startNewSession(); + // 上传上次被强杀遗留的事件 + 本次 session_start(含设备信息) + _telemetryService?.flushOnBackground(); } void _handleBackground() { @@ -77,6 +79,8 @@ class SessionManager with WidgetsBindingObserver { _state = SessionState.background; _endCurrentSession(); + // session_end 写入队列后立即上传,不等待阈值 + _telemetryService?.flushOnBackground(); } void _startNewSession() { diff --git a/frontend/mining-app/lib/core/telemetry/telemetry_service.dart b/frontend/mining-app/lib/core/telemetry/telemetry_service.dart index 96e739f3..a9f61f55 100644 --- a/frontend/mining-app/lib/core/telemetry/telemetry_service.dart +++ b/frontend/mining-app/lib/core/telemetry/telemetry_service.dart @@ -290,6 +290,11 @@ class TelemetryService { debugPrint('[Telemetry] User ID cleared'); } + Future flushOnBackground() async { + await _uploader.uploadBatch(batchSize: 50); + debugPrint('[Telemetry] Flushed on background'); + } + Future pauseForLogout() async { _uploader.stopPeriodicUpload(); await _storage.clearEventQueue();