PendingIntent.getActivity的使用

PendingIntent.getActivity(Context context, int requestCode, Intent intent, int flags)

第一个参数连接上下文的context

第二个参数是对PendingIntent的描述,请求值不同Intent就不同

第三个参数是一个Intent对象,包含跳转目标

第四个参数有4种状态

FLAG_CANCEL_CURRENT:如果当前系统中已经存在一个相同的PendingIntent对象,那么就将先将已有的PendingIntent取消,然后重新生成一个PendingIntent对象。

FLAG_NO_CREATE:如果当前系统中不存在相同的PendingIntent对象,系统将不会创建该PendingIntent对象而是直接返回null。

FLAG_ONE_SHOT:该PendingIntent只作用一次。在该PendingIntent对象通过send()方法触发过后,PendingIntent将自动调用cancel()进行销毁,那么如果你再调用send()方法的话,系统将会返回一个SendIntentException。

FLAG_UPDATE_CURRENT:如果系统中有一个和你描述的PendingIntent对等的PendingInent,那么系统将使用该PendingIntent对象,但是会使用新的Intent来更新之前PendingIntent中的Intent对象数据,例如更新Intent中的Extras。

 

如果使用PendingIntent.FLAG_UPDATE_CURRENT,那么每次notifiId都是相同的数字,说明PendingIntent是一个,旧的参数被更新了。

如果使用PendingIntent.FLAG_ONE_SHOT,那么PendingIntent只是第一次有效,后来再点击别的Notification就无效了。

是否和getActivity的第2个参数有关系呢?

确实如此,第2个参数如果不同,那么表示PendingIntent不同,就不会出现上述两种情况。

 

那么问题来了,FLAG_CANCEL_CURRENT和FLAG_UPDATE_CURRENT有多大的区别?

 

posted @ 2016-10-25 10:23  Lyxin_c  阅读(8291)  评论(0编辑  收藏  举报