O Android continua armazenando minhas intenções em cache. Extras, como declarar uma intenção pendente que mantém novos extras?

Alguns dias atrás, eu estava lutando para encontrar uma maneira de usar intenções personalizadas para meus alarmes. Embora tenha recebido uma resposta clara, preciso personalizar os Intenções com base em algum ID exclusivo, por exemplo.setAction() ainda tem alguns problemas.

Eu defino um PendingIntent desta maneira:

Intent intent = new Intent(this, viewContactQuick.class);
intent.setAction("newmessage"+objContact.getId());//unique per contact
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK ).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP );
intent.putExtra("id", Long.parseLong(objContact.getId()));
intent.putExtra("results", result.toArray());

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0);

então isso é usado por um gerente de notificação

NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);
// first try to clear any active notification with this contact ID
mNotificationManager.cancel(Integer.parseInt(objContact.getId()));

// then raise a new notification for this contact ID
mNotificationManager.notify(Integer.parseInt(objContact.getId()), notification);

Isso funciona assim:

aplicativo cria uma mensagem para um contatouma intenção é fornecida com o ID do contato e detalhes sobre a mensagemnotificação é gerada com a mensagemações do usuário na notificação e o aplicativo exibe a mensagem transmitida pela intenção

O problema

Isso pode acontecer mais de uma vez para um contato. E quando a segunda mensagem é gerada, a notificação é gerada bem (a mensagem está correta), mas a intenção quando o usuário aciona a notificação é usar dados antigos, para que a mensagem anterior seja passada e não a nova mensagem.

Então, de alguma forma, a intenção é armazenar em cache e reutilizar extras anteriores. Como posso torná-lo único por contato e por ação?

questionAnswers(2)

yourAnswerToTheQuestion