C# 如何避免创建没有内容的空白通知弹出窗口

C# 如何避免创建没有内容的空白通知弹出窗口,c#,android,xamarin,notifications,foregroundnotification,C#,Android,Xamarin,Notifications,Foregroundnotification,我有一个创建持续通知的服务,如下所示。我需要创建此通知的唯一原因是,我希望在应用程序关闭时保持服务运行 我不想在通知中显示任何内容。但每次创建此通知时,它都会向用户显示一个空白的弹出窗口,这很烦人,而且不会消失很长时间。我怎样才能避免呢 var _notificationBuilder = new NotificationCompat.Builder(this, channelId) .SetSmallIcon(Resource.Mipmap.icon) .SetPriority((

我有一个创建持续通知的服务,如下所示。我需要创建此通知的唯一原因是,我希望在应用程序关闭时保持服务运行

我不想在通知中显示任何内容。但每次创建此通知时,它都会向用户显示一个空白的弹出窗口,这很烦人,而且不会消失很长时间。我怎样才能避免呢

var _notificationBuilder = new NotificationCompat.Builder(this, channelId)
   .SetSmallIcon(Resource.Mipmap.icon)
   .SetPriority((int)Android.App.NotificationPriority.Min)
   .SetOnlyAlertOnce(true)
   .SetOngoing(true);

var notification = _notificationBuilder.Build();
StartForeground(SERVICE_RUNNING_NOTIFICATION_ID, notification);

notificationBuilder只是一个创建通知弹出窗口的对象

如果您想实现一种用户解除通知的方法,请应用该选项

SetOngoing (false)
如果你想添加一些文字

setContentTitle(messageTitle)
setContentText(messageBody)

如果您根本不想收到任何通知,可以删除所有NotificationCompat代码。它与服务无关。

根据Android文档,在使用前台服务时,必须为状态栏提供不可拒绝的通知,即使您试图通过设置最小优先级来隐藏通知,它也会用默认行为替换。有关详细信息,请参阅“”

永久性服务可能会占用大量系统资源并降低设备运行速度,因此Android会设置限制以避免滥用,但它也提供了几种方法,其中之一是“PeriodicWorkRequest”,它可以在应用程序关闭的情况下运行,在满足条件时,甚至在设备重新启动时,也可以恢复运行。但它有一些限制,比如:最大运行时间10分钟,最小重复间隔15分钟

要使用WorkManager,您需要首先创建Worker类,比如CalculatorWorker,然后构建workrequet以每20分钟运行一次:

PeriodicWorkRequest taxWorkRequest = PeriodicWorkRequest.Builder.From<CalculatorWorker>(TimeSpan.FromMinutes(20)).Build();

这不是创建后台服务的方法。我不能使用IntentService,因为我的服务假设每分钟都在无限时间拉取数据,并且我的应用程序应该能够在任何时候从服务读取数据。这是我发现的最接近实际的解决方案,但它需要绑定前台通知,否则服务将被破坏。你能告诉我做后台服务的正确方法吗?
WorkManager.Instance.Enqueue(taxWorkRequest);