PendingIntent上使用了什么“requestCode”?

背景:

我正在使用PendingIntent通过AlarmManager进行报警。

问题:

起初我以为要取消以前的那个,我必须提供我以前用过的确切的requestCode来启动报警。

但后来我发现我错了,因为取消API说:

使用匹配的意图删除任何警报。 任何types的意图匹配此警报(由filterEquals(Intent)定义)的警报将被取消。

看“ filterEquals ”,文档说:

确定两个意图是否相同意图解决(过滤)的目的。 也就是说,如果他们的行为,数据,types,类别和类别是相同的。 这并不比较意图中包含的任何额外数据。

所以我没有得到什么“requestCode”是…

问题是:

什么是“requestCode”用于?

如果我使用相同的“requestCode”创build多个警报怎么办? 他们互相覆盖吗?

  1. requestCode用于稍后检索相同的未决意向实例(用于取消等)。
  2. 是的,我的猜测是警报将相互覆盖。 我会保持请求代码的独特性。

我只是想添加@Minhaj Arfin的答案

1- requestCode用于在稍后获得相同的待定意图(用于取消等)

2-是的,只要您指定与您在PendingIntent中指定的Intent相同的Receiver,它们就会被覆盖

例:

 Intent startIntent1 = new Intent(context, AlarmReceiverFirst.class); PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, startIntent1, 0); Intent startIntent2 = new Intent(context, AlarmReceiverSecond.class); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, startIntent2, 0); 

从上面的例子来看,它们不会相互覆盖, 因为接收器是不同的 (AlarmReceiverFirst和AlarmReceiverSecond)

 Intent startIntent2 = new Intent(context, AlarmReceiverSecond.class); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, startIntent2, 0); Intent startIntent3 = new Intent(context, AlarmReceiverSecond.class); PendingIntent pendingIntent3 = PendingIntent.getBroadcast(context, 0, startIntent3, 0); 

从上面的例子来看,它们相互覆盖, 因为接收机是相同的 (AlarmReceiverSecond)