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);