Files
AutoTime-Tracker/lib/services/background_sync_service.dart
2025-11-13 15:45:28 +08:00

61 lines
1.4 KiB
Dart

import 'dart:async';
import 'time_tracking_service.dart';
import 'statistics_service.dart';
/// 后台同步服务 - 定期同步应用使用数据
class BackgroundSyncService {
final TimeTrackingService _timeTrackingService = TimeTrackingService();
final StatisticsService _statisticsService = StatisticsService();
Timer? _syncTimer;
bool _isRunning = false;
/// 启动后台同步
Future<void> start() async {
if (_isRunning) return;
_isRunning = true;
// 立即同步一次
await syncNow();
// 每 15 分钟同步一次
_syncTimer = Timer.periodic(const Duration(minutes: 15), (timer) async {
await syncNow();
});
// 启动原生后台追踪
await _timeTrackingService.startBackgroundTracking();
}
/// 停止后台同步
Future<void> stop() async {
_isRunning = false;
_syncTimer?.cancel();
_syncTimer = null;
await _timeTrackingService.stopBackgroundTracking();
}
/// 立即同步
Future<void> syncNow() async {
try {
print('Background sync: Starting sync...');
// 同步今日数据
await _timeTrackingService.syncTodayData();
// 刷新统计
await _statisticsService.refreshTodayStats();
print('Background sync: Completed');
} catch (e) {
print('Background sync error: $e');
}
}
/// 检查是否正在运行
bool get isRunning => _isRunning;
}