PendingIntent.FLAG_CANCEL_CURRENT
PendingIntent可以由三种动作得到相应的实例:getActivity(Context, int, Intent, int), getActivities(Context, int, Intent[], int), getBroadcast(Context, int, Intent, int), and getService(Context, int, Intent, int);分别对应的是打开activity、打开多个activity、打开broadcastrecevicer组件,打开service组件。在四个参数中,第一和第三个是比较重要的,第二和第四次之。
PendingIntent与Intent的区别主要在于Intent是立即执行的,PendingIntent则会进行延时执行。有几点要注意的是:
a. Intent是立即使用的,而PendingIntent可以等到事件发生后触发,PendingIntent可以cancel
b. Intent在程序结束后即终止,而PendingIntent在程序结束后依然有效
c. PendingIntent自带Context,而Intent需要在某个Context内运行
d. Intent在原task中运行,PendingIntent在新的task中运行
在PendingIntent中的第四个参数中,通过使用PendingIntent.FLAG_UPDATE_CURRENT参数的话,可以让新的Intent会更新之前PendingIntent中的Intent对象数据,例如更新Intent中的Extras。另外,我们也可以在PendingIntent的原进程中调用PendingIntent的cancel ()把其从系统中移除掉。