Я использую PendingIntent
вместе с AlarmManager
и BroadcastReceiver
, чтобы показывать напоминания в указанное пользователем время. Я показываю напоминание, используя NotificationManager
.
Перед установкой уведомления я хочу, чтобы на кнопке было написано "Установить напоминание", а после установки уведомления я хочу, чтобы на кнопке было написано "Изменить напоминание". Как только уведомление будет показано пользователю, на кнопке снова должно быть написано "Установить напоминание".
Я создаю тот же PendingIntent
с тем же намерением, контекстом и тем же уникальным идентификатором (myUniqueId), чтобы проверить, активен ли PendingIntent
.
Intent intent = new Intent(context, ReminderReceiver.class);
boolean reminderActive = (PendingIntent.getBroadcast(context, myUniqueId, intent, PendingIntent.FLAG_NO_CREATE) != null);
Теперь это работает, и текст кнопки отображается правильно. Но я понял, что как только уведомление отображается, если я явно не извлеку тот же PendingIntent
и не отменю его, оно НЕ будет удалено на некоторое время. Так что какое-то время на кнопке все еще написано «Напоминание об изменении».
Итак, правильно ли предположить, что, если я явно не отменю PendingIntent, он все еще хранится где-то в памяти для сборки мусора?