Android继续caching我的意图额外,如何申报一个待定的意图,保持新鲜的额外?
几天前,我正在努力寻找一种方法来使用自定义的意图,我的报警。 虽然我得到了明确的答案,我必须根据一些独特的ID来定制Intents。 setAction()
仍然有一些问题。
我这样定义一个PendingIntent:
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);
那么这被通知pipe理器使用
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);
这是这样工作的:
- 应用程序为联系人创build一条消息
- 提供了联系人ID和消息详情的意图
- 通知与消息一起提出
- 用户对通知的操作和应用程序显示意图传递的消息
问题
联系人可能会多次发生这种情况。 而当第二条消息生成时,通知就会被很好地提出(消息很好),但是当用户操作使用旧数据的通知时,意味着前面的消息被传递,而不是新的消息。
所以不pipe怎样,意图是caching和重用以前的额外function。 我怎样才能使每个联系人和每个动作独特?
如果只有其中一个PendingIntents
对于此联系人在任何时间点FLAG_UPDATE_CURRENT
完成,或者如果您始终想要使用最新的一组额外内容, FLAG_UPDATE_CURRENT
在创buildPendingIntent
时使用FLAG_UPDATE_CURRENT
。
如果多个特定联系人PendingIntent
出现,并且需要单独附加,则需要添加一个计数或时间戳或其他内容来区分它们。
intent.setAction("actionstring" + System.currentTimeMillis());
UPDATE
此外,对PendingIntent
getActivity()
和亲属的轻度logging的第二个参数显然可用于为相同的底层Intent
创build不同的PendingIntent
对象,尽pipe我从来没有尝试过这种方法。
我通常指定唯一的requestCode来防止我的PendingIntents相互覆盖:
PendingIntent pending = PendingIntent.getService(context, unique_id, intent, 0);
而你的情况我同意CommonsWare你只需要FLAG_UPDATE_CURRENT标志。 新的额外将覆盖旧的值。