Я создаю простое приложение для Android, в котором создано уведомление.
Теперь я хочу удалить уведомление, если пользователь не отвечает по истечении определенного времени
Это означает, что я хочуудалить уведомление через пять минут
Текущее правильное решение может использовать:
NotificationCompat.Builder # setTimeoutAfter (long)
Что вам нужно, так это сочетание Alarmmanager и уведомителя.
Зарегистрируйте диспетчер аварийных сигналов, который будет вызывать службу через 5 минут, и используйте NotificationManager.cancel в реализации службы.
Пример службы сигнализации здесь . Я полагаю, вы знаете, использовать Диспетчер уведомлений .
NotificationCompat.Builder notification = new NotificationCompat.Builder(context) .setSmallIcon(Util.getNotificationIcon(context)) .setContentTitle(new SessionManager().getDomainPreference(context)) .setAutoCancel(true) .setOngoing(false) .setPriority(NotificationCompat.PRIORITY_MAX) .setShowWhen(false) .setContentText(summaryText) .setTimeoutAfter(3000) // add time in milliseconds .setChannelId(CHANNEL_ID);
AlarmManager чаще используется для сложных сервисов, которые должны работать в фоновом режиме при закрытии приложения. Вы также можете использовать классический Java Runnable в обработчике для простого небольшого потока.
Handler h = new Handler(); long delayInMilliseconds = 5000; h.postDelayed(new Runnable() { public void run() { mNotificationManager.cancel(id); } }, delayInMilliseconds);
Также смотрите здесь:
Очистка уведомления через несколько секунд
Вы также можете использовать TimerTask-Class.