diff --git a/Covid19Radar/Covid19Radar.iOS/Services/DataMaintainanceBackgroundService.cs b/Covid19Radar/Covid19Radar.iOS/Services/DataMaintainanceBackgroundService.cs index 4cb2606f9..fb14d801d 100644 --- a/Covid19Radar/Covid19Radar.iOS/Services/DataMaintainanceBackgroundService.cs +++ b/Covid19Radar/Covid19Radar.iOS/Services/DataMaintainanceBackgroundService.cs @@ -17,15 +17,19 @@ namespace Covid19Radar.iOS.Services { public class DataMaintainanceBackgroundService : AbsDataMaintainanceBackgroundService { - private const double BGTASK_INTERVAL = 24 * 60 * 60; // one day + private const int TASK_INTERVAL_IN_HOURS = 24; private static readonly string BGTASK_IDENTIFIER = AppInfo.PackageName + ".data-maintainance"; + private readonly IDateTimeUtility _dateTimeUtility; + public DataMaintainanceBackgroundService( ILoggerService loggerService, ILogFileService logFileService, - IEventLogRepository eventLogRepository + IEventLogRepository eventLogRepository, + IDateTimeUtility dateTimeUtility ) : base(loggerService, logFileService, eventLogRepository) { + _dateTimeUtility = dateTimeUtility; } public override void Schedule() @@ -36,7 +40,8 @@ public override void Schedule() { LoggerService.Info("Background task has been started."); - ScheduleBgTask(); + DateTime nextDateTime = _dateTimeUtility.UtcNow.Date.AddHours(TASK_INTERVAL_IN_HOURS); + ScheduleBgTask(nextDateTime); var cancellationTokenSource = new CancellationTokenSource(); task.ExpirationHandler = cancellationTokenSource.Cancel; @@ -77,12 +82,12 @@ public override void Schedule() LoggerService.Error("BGTaskScheduler.Shared.Register failed."); } - ScheduleBgTask(); + ScheduleBgTask(_dateTimeUtility.UtcNow); LoggerService.EndMethod(); } - private void ScheduleBgTask() + private void ScheduleBgTask(DateTime nextDateTime) { LoggerService.StartMethod(); @@ -90,7 +95,7 @@ private void ScheduleBgTask() { BGProcessingTaskRequest bgTaskRequest = new BGProcessingTaskRequest(BGTASK_IDENTIFIER) { - EarliestBeginDate = NSDate.FromTimeIntervalSinceNow(BGTASK_INTERVAL), + EarliestBeginDate = NSDate.FromTimeIntervalSince1970(nextDateTime.ToUnixEpoch()) }; LoggerService.Info($"request.EarliestBeginDate: {bgTaskRequest.EarliestBeginDate}"); diff --git a/Covid19Radar/Covid19Radar.iOS/Services/EventLogSubmissionBackgroundService.cs b/Covid19Radar/Covid19Radar.iOS/Services/EventLogSubmissionBackgroundService.cs index 6b63c9511..45babf139 100644 --- a/Covid19Radar/Covid19Radar.iOS/Services/EventLogSubmissionBackgroundService.cs +++ b/Covid19Radar/Covid19Radar.iOS/Services/EventLogSubmissionBackgroundService.cs @@ -17,22 +17,25 @@ namespace Covid19Radar.iOS.Services { public class EventLogSubmissionBackgroundService : AbsEventLogSubmissionBackgroundService { - private const double BGTASK_INTERVAL = 24 * 60 * 60; // one day + private const int TASK_INTERVAL_IN_HOURS = 24; private static readonly string BGTASK_IDENTIFIER = AppInfo.PackageName + ".eventlog-submission"; private readonly IEventLogService _eventLogService; private readonly IEventLogRepository _eventLogRepository; private readonly ILoggerService _loggerService; + private readonly IDateTimeUtility _dateTimeUtility; public EventLogSubmissionBackgroundService( IEventLogService eventLogService, IEventLogRepository eventLogRepository, - ILoggerService loggerService + ILoggerService loggerService, + IDateTimeUtility dateTimeUtility ) : base() { _eventLogService = eventLogService; _eventLogRepository = eventLogRepository; _loggerService = loggerService; + _dateTimeUtility = dateTimeUtility; } public override void Schedule() @@ -43,7 +46,8 @@ public override void Schedule() { _loggerService.Info("Background task has been started."); - ScheduleBgTask(); + DateTime nextDateTime = _dateTimeUtility.UtcNow.AddHours(TASK_INTERVAL_IN_HOURS); + ScheduleBgTask(nextDateTime); var cancellationTokenSource = new CancellationTokenSource(); task.ExpirationHandler = cancellationTokenSource.Cancel; @@ -81,7 +85,7 @@ await _eventLogService.SendAllAsync( }, cancellationTokenSource.Token); }); - ScheduleBgTask(); + ScheduleBgTask(_dateTimeUtility.UtcNow); if (result) { @@ -95,7 +99,7 @@ await _eventLogService.SendAllAsync( _loggerService.EndMethod(); } - private void ScheduleBgTask() + private void ScheduleBgTask(DateTime nextDateTime) { _loggerService.StartMethod(); @@ -103,7 +107,7 @@ private void ScheduleBgTask() { var bgTaskRequest = new BGProcessingTaskRequest(BGTASK_IDENTIFIER) { - EarliestBeginDate = NSDate.FromTimeIntervalSinceNow(BGTASK_INTERVAL), + EarliestBeginDate = NSDate.FromTimeIntervalSince1970(nextDateTime.ToUnixEpoch()), RequiresNetworkConnectivity = true };