PendingIntent表示一种即将发生的意图,和Intent的区别在于:PendingIntent是在将来的某个不确定的时刻发生,而Intent是立刻发生
典型使用场景是给RemoteViews添加单击事件,想要给RemoteViews设置单击事件,就必须使用PendingIntent
第二个参数requestCode表示PendingIntent发送方的请求码,多数情况下设为0即可
PendingIntent的匹配规则为:如果两个PendingIntent它们内部的Intent相同并且requestCode也相同,那么这两个PendingIntent就是相同的。
Intent的匹配规则为:如果两个Intent的ComponentName和intent-filter都相同,那么这两个Intent就是相同的。(Extras不参加Intent的匹配过程)
第四个参数flag的含义
FLAG_ONE_SHOT:当前描述的PendingIntent只能被使用一次,然后它就会被自动cancel,也就意味着后续的send调用会失败
FLAG_NO_CREATE:当前描述的PendingIntent不会主动创建,如果当前PendingIntent之前不存在,则getXXX方法会直接返回null
FLAG_CANCEL_CURRENT:当前描述的PendingIntent如果已经存在,那么它们都会被cancel,然后系统会创建一个新的PendingIntent
FLAG_UPDATE_CURRENT:当前描述的PendingIntent如果已经存在,那么它们都会被更新,即它们的Intent中的Extras会被替换成最新的