/// <inheritdoc /> public override void OnCreate() { base.OnCreate(); _actionMainActivity = $"{Application.PackageName}.show_main_activity"; _notificationManager = GetSystemService(NotificationService) as NotificationManager; if (_notificationManager == null) { throw new Exception("Unable to get NotificationManager in NativeBackgroundService"); } // Create notification channel if (Build.VERSION.SdkInt >= BuildVersionCodes.O) { var notificationChannel = new NotificationChannel(_builder.ChannelId, _builder.ChannelName, _builder.NotificationImportance) { LockscreenVisibility = _builder.NotificationVisibility }; _notificationManager.CreateNotificationChannel(notificationChannel); } _backgroundService = _builder.Build(); var periodicServices = _backgroundService.GetPeriodicServices(); foreach (var(periodicService, period) in periodicServices) { _backgroundServiceTasks.Add(new BackgroundServiceTask(periodicService, period)); } }
private async Task StartAsync() { try { await _backgroundService.StartAsync(_cancellationTokenSource.Token); var periodicServices = _backgroundService.GetPeriodicServices(); foreach (var(periodicService, period) in periodicServices) { Debug.WriteLine($"Periodic service starting: {periodicService.Name}"); _ = Task.Run( async() => await PeriodicTaskWrapper(periodicService, period, _cancellationTokenSource.Token), _cancellationTokenSource.Token) .ConfigureAwait(false); Debug.WriteLine($"Periodic service started: {periodicService.Name}"); } } catch (Exception e) { Debug.WriteLine(e); } }