PendingIntent上使用了什么“requestCode”?
背景:
我正在使用PendingIntent通过AlarmManager进行报警。
问题:
起初我以为要取消以前的那个,我必须提供我以前用过的确切的requestCode来启动报警。
但后来我发现我错了,因为取消API说:
使用匹配的意图删除任何警报。 任何types的意图匹配此警报(由filterEquals(Intent)定义)的警报将被取消。
看“ filterEquals ”,文档说:
确定两个意图是否相同意图解决(过滤)的目的。 也就是说,如果他们的行为,数据,types,类别和类别是相同的。 这并不比较意图中包含的任何额外数据。
所以我没有得到什么“requestCode”是…
问题是:
什么是“requestCode”用于?
如果我使用相同的“requestCode”创build多个警报怎么办? 他们互相覆盖吗?
-
requestCode
用于稍后检索相同的未决意向实例(用于取消等)。 - 是的,我的猜测是警报将相互覆盖。 我会保持请求代码的独特性。
我只是想添加@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)