/// <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));
            }
        }
Beispiel #2
0
        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);
            }
        }