如何每次创建待处理的意图?目前,我现有的待定意图将被替换为新的意图。我尝试使用FLAG_ONE_SHOT
以及CANCEL_CURRENT
,但它无效。
答案 0 :(得分:33)
在请求代码中添加一个随机数:
Intent intent = new Intent(context, YourClassname.class);
intent.putExtra("some data", "txt"); // for extra data if needed..
Random generator = new Random();
PendingIntent i=PendingIntent.getActivity(context, generator.nextInt(), intent,PendingIntent.FLAG_UPDATE_CURRENT);
答案 1 :(得分:11)
FLAG_CANCEL_CURRENT-如果描述的PendingIntent已经存在,则在生成新的PendingIntent之前取消当前的PendingIntent。
FLAG_NO_CREATE - 如果描述的PendingIntent尚不存在,则只返回null而不是创建它。
FLAG_ONE_SHOT - 此PendingIntent只能使用一次。
FLAG_UPDATE_CURRENT-如果描述的PendingIntent已经存在,那么保留它,但是它用这个新Intent中的内容替换它的额外数据。
如果您确实需要多个不同的PendingIntent对象同时处于活动状态(例如用作同时显示的两个通知),那么您需要确保关联它们的某些内容有所不同他们有不同的PendingIntents。这可以是
Intent.filterEquals
考虑的任何Intent属性,或者提供给getActivity(Context, int, Intent, int), getActivities(Context, int, Intent[], int), getBroadcast(Context, int, Intent, int), or getService(Context, int, Intent, int).
的不同请求代码整数