PendingIntent描述了一个Intent和目标action。这个类的实例是用getActivity(Context,int,Intent,int)方法和getBroadcast(Context,int,Intent,int)和getService(Context,int,Intent,int)方法创建的。创建出的pending intent可以交给其它程序,于是它们可以在以后的某个时间以你的名义执行intent中所描述的动作。
通过给于一个PendingIntent,你可以使其它程序像你自己一样执行你所指定的操作(具有相同的权限和身份)。所以,你需要小心的创建PendingIntent:通常,你最基本的应该明确设置你的相关组件的名字,以保证将来intent是被发送给它而不是其它地方。
一个PendingIntent本是只是简单地引用一个由系统维护的一个令牌,这个令牌描述了用于取得PendingIntent的原始数据。这表示即使拥有这个PendingIntent的进程关闭了,但这个PendingIntent对于那些收到它的进程依然有效。如果创建这个PendingIntent的程序又重新运行并重新获取同一个类型的PendingIntent(相同的操作,action,数据,类型和组件以及相同的标志),那么获取的还是这个PendingIntent,并且这个程序可以用cancel()来删除这个PendingIntent。
Intent和PendingIntent的区别?
intent英文意思是意图,pending表示即将发生或来临的事情。
PendingIntent这个类用于处理即将发生的事情。比如在通知Notification中用于跳转页面,但不是马上跳转。
Intent 是及时启动,intent 随所在的activity 消失而消失。
PendingIntent 可以看作是对intent的包装,通常通过getActivity,getBroadcast ,getService来得到pendingintent的实例,当前activity并不能马上启动它所包含的intent,而是在外部执行 pendingintent时,调用intent的。正由于pendingintent中 保存有当前App的Context,使它赋予外部App一种能力,使得外部App可以如同当前App一样的执行pendingintent里的 Intent, 就算在执行时当前App已经不存在了,也能通过存在pendingintent里的Context照样执行Intent。另外还可以处理intent执行后的操作。常和alermanger 和notificationmanager一起使用。
Intent一般是用作Activity、Sercvice、BroadcastReceiver之间传递数据,而Pendingintent,一般用在 Notification上,可以理解为延迟执行的intent,PendingIntent是对Intent一个包装。
PendingIntent就是一个Intent的描述,我们可以把这个描述交给别的程序,别的程序根据这个描述在后面的别的时间做你安排做的事情 (By giving a PendingIntent to another application, you are granting it the right to perform the operation you have specified as if the other application was yourself,就相当于PendingIntent代表了Intent)。