Как избежать создания пустого всплывающего уведомления без содержимого - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть служба, которая создает текущее уведомление, как показано ниже. Единственная причина, по которой мне нужно создать это уведомление, заключается в том, что я хочу, чтобы моя служба работала, когда приложение закрыто.

Я не хочу отображать какой-либо контент в уведомлении. Но каждый раз, когда создается это уведомление, оно показывает пустое всплывающее окно для пользователя, которое раздражает, и оно не исчезает в течение долгого времени. Как я могу избежать этого?

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);

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

Согласно Android do c, при использовании Foreground Service обязательным является недопустимое уведомление для строки состояния, даже если вы попытаетесь скрыть уведомление, установив минимальный приоритет, оно заменит его по умолчанию поведение. Пожалуйста, обратитесь к ' Запуск службы на переднем плане ' для получения дополнительной информации.

Постоянный сервис может потреблять много системных ресурсов и замедлять работу устройства, поэтому Android устанавливает ограничения, чтобы избежать злоупотреблений, но он также предоставляет несколько способов для разумных фоновых заданий , один из них WorkManager PeriodicWorkRequest , который может работать с закрытым приложением и может вернуться в рабочее состояние при соблюдении условий, даже при перезагрузке устройства. Но у него есть некоторые ограничения, такие как: максимальное время выполнения 10 минут, минимальный интервал повторения 15 минут.

Чтобы использовать WorkManager, сначала необходимо создать класс Worker, скажем CalculatorWorker, а затем создать рабочий пакет для запуска каждые 20 минут. минут для него:

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

Отдайте его системе:

WorkManager.Instance.Enqueue(taxWorkRequest);
0 голосов
/ 21 февраля 2020

messagesBuilder - это просто объект, который создает всплывающее уведомление.

Если вы хотите реализовать способ отклонения уведомлений для пользователей, примените этот параметр.

SetOngoing (false)

Если вы хотите добавить текст

setContentTitle(messageTitle)
setContentText(messageBody)

Если вы вообще не хотите получать уведомления, вы можете удалить весь код NotificationCompat. Это не связано с обслуживанием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...