android pendingIntent кэшируется при нескольких вызовах контакта ACTION_EDIT после нажатия кнопки «Домой» - PullRequest
1 голос
/ 06 сентября 2011

У меня есть ДОМАШНИЙ ВИДЖЕТ с КНОПКОЙ.Вот действие, добавленное к кнопке:

Intent editContact = new Intent(Intent.ACTION_EDIT, ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.valueOf(contactID)));

editContact.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_NEW_TASK);

PendingIntent pendingEditContact = PendingIntent.getActivity(rcvContext, appWidgetID, editContact, PendingIntent.FLAG_UPDATE_CURRENT);

Всякий раз, когда внутренняя активность андроида для редактирования контакта оставляется либо путем редактирования контакта, либо без нажатия кнопки возврата, все работает нормально, и действие удаляется.из стека.Перезапуск действия из другого виджета корректно отображает соответствующие данные контакта для редактирования.

Если контакт не отредактирован и оставлен нажатием кнопки «Домой» устройства Android, перезапуск другого контакта с другогоВиджет снова заменяет предыдущие контактные данные. К сожалению, это происходит только для второго запуска. Любая попытка, превышающая 2 (т.е. повторное нажатие кнопки «Домой» без изменения контакта), приводит к активности, содержащей данные предыдущего контакта для редактирования.Видимо, ожидающие намерения кэшируются.Вот почему PendingIntent.FLAG_UPDATE_CURRENT должен обновить намерение относительно того, какой контакт редактировать, но безрезультатно: - (

У меня также было получено следующее:

НАМЕРЕНИЕ В ОЖИДАНИИ:

PendingIntent.FLAG_CANCEL_CURRENT;

ДЕЯТЕЛЬНОСТЬ:

editContact.putExtra("random", System.currentTimeMillis());

Мне бы хотелось получить ваш совет по решению этой проблемы. Большое спасибо людям!

...