PendingIntent知识点学习总结

PendingIntent表示一种处于待定状态的意图。和Intent的区别在于,PendingIntent是一个即将在未来的某个时刻发生,而Intent是即刻发生。
PendingIntent多用于含有RemoteViews控件的场景中。RemoteViews是运行在远程的进程中的,所以无法直接去设置它的单击事件。就必须使用PendingIntent,
PendingIntent通过send和cancel方法来发送和取消待定的意图。

PendingIntent支持三种意图:启动 Activity,启动Service,发送Broadcast。
对应常用的三个静态方法分别为:

 public static PendingIntent getActivity(Context context, int requestCode,Intent intent, int flags)
 public static PendingIntent getBroadcast(Context context, int requestCode,Intent intent, int flags)
 public static PendingIntent getService(Context context, int requestCode,Intent intent, int flags)

第二个参数requestCode的值本身没什么意思,但是她会影响第四个参数flags的效果
flags常见的的类型有三种
FLAG_ONE_SHOT
FLAG_CANCEL_CURRENT
FLAG_UPDATE_CURRENT
结合通知栏消息来说的话,同时弹出多个通知的时候
当PendingIntent**不匹配**时
这三种标志位对通知没什么影响,各个通知之间是互不影响的。
当PendingIntent**匹配**时
FLAG_ONE_SHOT标示:所有的通知和第一条通知保持完全一致,包括其中的EXTRAS,单击任何一条通知后,剩下的通知均无法再打开。
FLAG_CANCEL_CURRENT标示:只有最新的那条通知可以打开,以前的通知全部失效
FLAG_UPDATE_CURRENT标示:之前弹出的通知都会被最新的那条通知更新,所有的通知和最新的那条保持一致,包括EXTARS,所有的通知都是可以打开的

PendingIntent在什么样的情况下算是匹配的?
如果两个PendingIntent内部的Intent和requestCode都匹配的时候,那么这两个PendingIntent才是匹配的
如果两个Intent的ComponentName和intent-filter都相同,那么这两个Intent是匹配的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值