Когда именно PendingIntent удаляется/удаляется?

Я использую 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, он все еще хранится где-то в памяти для сборки мусора?


person Ranhiru Jude Cooray    schedule 14.10.2012    source источник


Ответы (1)


Итак, правильно ли предположить, что, если я явно не отменю PendingIntent, он все еще хранится где-то в памяти?

Да. Android кэширует PendingIntent объектов. Насколько я знаю, они будут висеть до тех пор, пока процесс не будет завершен.

person CommonsWare    schedule 14.10.2012