PendingIntent requestCode flags 参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PendingIntent requestCode flags 参数相关的知识,希望对你有一定的参考价值。

参考技术A

在使用PendingIntent向Activity和BroadcastReceiver传递内容时遇到的坑,记录下来。

第二个参数 requestCode 相同的话后面的定时器会将前面的定时器"覆盖"掉,只会启动最后一个定时器,所以同一时间的定时器可以用同一个requestCode,不同时间的定时器用不同的requestCode。

<br />

第二个参数 requestCode不同 ,以及设置最后一个flags参数为PendingIntent. FLAG_UPDATE_CURRENT 可以保证每次点击notification进入activity,传的参数都是当前这个notification传过去的(Intent里附带的参数)。如果 requestCode相同 ,最后一个参数为PendingIntent. FLAG_UPDATE_CURRENT ,那么所有未点击的notification里的参数都会被更新为最后一个传过去的,也就是最新的。

flags的取值有四个:
FLAG_ONE_SHOT:获取的PendingIntent只能使用一次
FLAG_NO_CREATE:利用FLAG_NO_CREAT获取的PendingIntent,若描述的Intent不存在则返回NULL值
FLAG_CANCEL_CURRENT:如果描述的PendingIntent已经存在,则在产生新的Intent之前会先取消掉当前的
FLAG_UPDATE_CURRENT:能够新new一个 Intent

举个栗子:
通过notification向activity传递一个数字,第一个通知传递1,第二个通知传递2。(notification的notifyCode不同,保证两个notification都能显示出来)现在两个通知均是弹出来未点击状态。
点击测试结果如下:

以上是关于PendingIntent requestCode flags 参数的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用相同的 requestCode 和不同的 extra 创建多个 PendingIntent?

requestCode 代表啥?

PendingIntent

Android:requestCode 和 resultCode

Android:为 requestcode 值选择啥?

onActivityResult 中的 requestCode 错误