PendingIntent即是一个Intent的描述,我们可以把这个描述交给别的程序,别的程序根据这个描述在后面的别的时间做你安排做的事情。换种说法Intent字面意思是意图,我们想要做的事情,在Activity中我们可以立即执行它,PendingIntent相当于对Intent执行了包装,我们不一定要马上执行它,我们将其包装后传递给其他Activity或Application。这时获取到PendingIntent的Application能够根据里面的Intent来得知发出者的意图选择执行。
PendingIntent是Android系统管理并持有的用于描述和获取原始数据的对象的标志(引用)。这就意味着,即便创建该PendingIntent对象的进程被杀死了,这个PendingItent对象自己在其他进程中还是可用的。
如果Intent对象的Action是相同的,Data也是相同的,Categories也是相同的,Components也是相同的,Flags也是相同的),并且之前获取的PendingIntent对象还有效的话,那么该进程获取到的PendingItent对象将获得同一个对象的引用,可以通过cancel()方法来从系统中移除它。
PendingIntent对象由系统持有,因此不能通过设置不同的Extra来生成不同的PendingIntent对象,系统只通过刚才在上面提到的几个要素来判断PendingIntent对象是否是相同的。
PendingIntent有以下flag:
FLAG_CANCEL_CURRENT:如果当前系统中已经存在一个相同的PendingIntent对象,那么就将先将已有的PendingIntent取消,然后重新生成一个PendingIntent对象。
FLAG_NO_CREATE:如果当前系统中不存在相同的PendingIntent对象,系统将不会创建该PendingIntent对象而是直接返回null。
FLAG_ONE_SHOT:该PendingIntent只作用一次。
FLAG_UPDATE_CURRENT:如果系统中已存在该PendingIntent对象,那么系统将保留该PendingIntent对象,但是会使用新的Intent来更新之前PendingIntent中的Intent对象数据,例如更新Intent中的Extras。
创建PendingIntent方式:
PendingIntent.getActivity (context, requestCode, broadIntent, flags)
PendingIntent.getBroadcast(context,requestCode, broadIntent, flags)
PendingIntent.getService (context, requestCode, broadIntent, flags)
API文档里虽然未使用requestCode参数,但实际上是通过该参数来区别不同的Intent的。
分享到:
相关推荐
Android中pendingIntent的深入理解
NULL 博文链接:https://sunzone.iteye.com/blog/1998091
Notification的用法和PendingIntent的使用
博客《详解PendingIntent》所涉及的源码,这是博客中所说的有问题的PendingIntent对应原源代码
主要介绍了Android中pendingIntent的深入分析的相关资料,需要的朋友可以参考下
这样我们就可以画出如下示意图:PendingIntent 只能通过下列的静态方法获取//获取Broadcast关联的PendingIntent PendingI
PendingIntent 分别实现了Notification和sms短信发送的两个示例
android的服务以及通知的小例子 个人存档 代码笔记见http://blog.sina.com.cn/s/blog_70356c200100y9pf.html
博客《详解PendingIntent》有问题的源码第二部分
简单的总结了Intent和PendtingIntent的区别,经常与alermanger 和notificationmanager一起使用。
自制发送短信程序--SmsManager与PendingIntent类的使用
NULL 博文链接:https://technicalsearch.iteye.com/blog/2007636
PendingintengTest
主要介绍了Android编程实现PendingIntent控制多个闹钟的方法,涉及PendingIntent属性设置与使用的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
Android中PendingIntent的简要介绍.pdf 学习资料 复习资料 教学资源
android 自制发送短信程序 SmsManager与PendingIntent对象
* 先建构一PendingIntent对象并使用getBroadcast()方法进行Broadcast * * 将PendingIntent,电话,简讯文字等参数传入sendTextMessage()方法发送简讯*/ PendingIntent mPI = PendingIntent.getBroadcast(EX05_03....