From a8261e110a099a730ff133c27a2bc3b41d4ce063 Mon Sep 17 00:00:00 2001 From: hailin Date: Sat, 27 Dec 2025 10:40:28 -0800 Subject: [PATCH] =?UTF-8?q?fix(mobile-app):=20=E9=80=80=E5=87=BA=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=97=B6=E5=81=9C=E6=AD=A2=E9=81=A5=E6=B5=8B=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TelemetryService 添加 pauseForLogout() 方法 - 退出登录时先停止定期上传再清空队列 - 避免退出后继续上传导致等待 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../core/services/multi_account_service.dart | 11 ++++------- .../lib/core/telemetry/telemetry_service.dart | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/frontend/mobile-app/lib/core/services/multi_account_service.dart b/frontend/mobile-app/lib/core/services/multi_account_service.dart index 77365b7f..2460306e 100644 --- a/frontend/mobile-app/lib/core/services/multi_account_service.dart +++ b/frontend/mobile-app/lib/core/services/multi_account_service.dart @@ -405,16 +405,13 @@ class MultiAccountService { } debugPrint('$_tag logoutCurrentAccount() - 已清除 ${_accountLocalKeys.length} 个 LocalStorage 缓存'); - // ===== 3. 清除遥测事件队列(用户相关数据) ===== - await _telemetryStorage.clearUserData(); - - // ===== 4. 清除遥测服务的用户ID ===== + // ===== 3. 暂停遥测服务(停止上传、清空队列、清除用户ID) ===== if (TelemetryService().isInitialized) { - TelemetryService().clearUserId(); - debugPrint('$_tag logoutCurrentAccount() - 清除 TelemetryService userId'); + await TelemetryService().pauseForLogout(); + debugPrint('$_tag logoutCurrentAccount() - 已暂停 TelemetryService'); } - // ===== 5. 清除 Sentry 用户信息 ===== + // ===== 4. 清除 Sentry 用户信息 ===== if (SentryService().isInitialized) { SentryService().clearUser(); debugPrint('$_tag logoutCurrentAccount() - 清除 SentryService userId'); diff --git a/frontend/mobile-app/lib/core/telemetry/telemetry_service.dart b/frontend/mobile-app/lib/core/telemetry/telemetry_service.dart index f8586a59..a4626c26 100644 --- a/frontend/mobile-app/lib/core/telemetry/telemetry_service.dart +++ b/frontend/mobile-app/lib/core/telemetry/telemetry_service.dart @@ -291,6 +291,23 @@ class TelemetryService { debugPrint('📊 [Telemetry] User ID cleared'); } + /// 暂停遥测上传(退出登录时调用) + /// 停止定期上传任务,清空事件队列 + Future pauseForLogout() async { + _uploader.stopPeriodicUpload(); + await _storage.clearEventQueue(); + _userId = null; + debugPrint('📊 [Telemetry] Paused for logout'); + } + + /// 恢复遥测上传(登录后调用) + void resumeAfterLogin() { + if (TelemetryConfig().globalEnabled) { + _uploader.startPeriodicUpload(); + debugPrint('📊 [Telemetry] Resumed after login'); + } + } + /// 设置用户是否同意数据收集 Future setUserOptIn(bool optIn) async { await TelemetryConfig().setUserOptIn(optIn);