多个待处理意图?

7

我的活动创建了一些通知。

以下是我当前在不同resultIntents上的操作方式:

PendingIntent resultPendingIntent =
  PendingIntent.getActivity(
    context,
    0,
    resultIntent,
    PendingIntent.FLAG_UPDATE_CURRENT
  );

现在,由于标记是强制性的,我被迫从四个标记中选择。如果我希望它们都能独立工作,并且新的通知不受以前的影响,我该怎么办。

2个回答

10

这里找到了解决方案:这里

您需要在意图上使用setAction设置唯一值,以便没有匹配的PendingIntents。

这是我使用的代码:

setAction(Long.toString(System.currentTimeMillis()))

2
这没有任何意义。如果您始终将 ACTION 设置为唯一值,则设置 PendingIntent.FLAG_UPDATE_CURRENT 是无用的,因为永远不会有匹配的 PendingIntent。设置唯一的 ACTION 字符串可以保证调用 PendingIntent.getActivity() 将始终返回一个新的 PendingIntent - David Wasser
是的,那正是我实际所需的。我正在寻找一种方法来确保永远不会有匹配的PendingIndent。答案有这个标记只是因为我从另一个stackoverflow答案中引用了它。如果造成任何困惑,请原谅。 - Sid Verma
1
你可以编辑你的回答并移除标记。正如我所说,这个标记毫无意义,很可能会让其他人感到困惑。 - David Wasser

4

来自官方文档:

如果你确实需要同时使用多个不同的PendingIntent对象(例如作为两个同时显示的通知),那么你需要确保它们之间存在某些不同之处,以便将它们与不同的PendingIntent相关联。这可以是由Intent.filterEquals考虑的任何意图属性,或提供给getActivity(Context,int,Intent,int)、getActivities(Context,int,Intent[],int)、getBroadcast(Context,int,Intent,int)或getService(Context,int,Intent,int)的不同请求代码整数。

Intent.filterEquals 文档:

确定两个意图在意图解析(过滤)方面是否相同。即如果它们的操作,数据,类型,类和类别相同,则为相同。这不会比较包含在意图中的任何额外数据。

如果你需要无限数量的PendingIntents,我建议使用 Intent.setData 添加某种唯一值。如果你可以对它们进行分组,使用 setTypeaddCategory 减少需要唯一PendingIntent的数量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接