Android中pendingIntent的深入分析

pendingIntent字面意义:等待的,未决定的Intent。
要得到一个pendingIntent对象,使用方法类的静态方法 getActivity(Context, int, Intent, int),getBroadcast(Context, int, Intent, int),getService(Context, int, Intent, int) 分别对应着Intent的3个行为,跳转到一个activity组件、打开一个广播组件和打开一个服务组件。
参数有4个,比较重要的事第三个和第一个,其次是第四个和第二个。可以看到,要得到这个对象,必须传入一个Intent作为参数,必须有context作为参数。
pendingIntent是一种特殊的Intent。主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的。pendingIntent执行的操作实质上是参数传进来的Intent的操作,但是使用pendingIntent的目的在于它所包含的Intent的操作的执行是需要满足某些条件的。
主要的使用的地方和例子:通知Notificatio的发送,短消息SmsManager的发送和警报器AlarmManager的执行等等。
Android的状态栏通知(Notification)
如果需要查看消息,可以拖动状态栏到屏幕下方即查看消息。
步骤:
1获取通知管理器NotificationManager,它也是一个系统服务
2建立通知Notification notification = new Notification(icon, null, when);
3为新通知设置参数(比如声音,震动,灯光闪烁)
4把新通知添加到通知管理器
发送消息的代码如下:
//获取通知管理器 NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE) int icon = android.R.drawable.stat_notify_chat; long when = System.currentTimeMillis();//通知发生的时间为系统当前时间 //新建一个通知,指定其图标和标题 Notification notification = new Notification(icon, null, when);//第一个参数为图标,第二个参数为短暂提示标题,第三个为通知时间 notification.defaults = Notification.DEFAULT_SOUND;//发出默认声音 notification.flags |= Notification.FLAG_AUTO_CANCEL;//点击通知后自动清除通知 Intent openintent = new Intent(this, OtherActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, openintent, 0);//当点击消息时就会向系统发送openintent意图 notification.setLatestEventInfo(this, “标题”, “我是内容", contentIntent); mNotificationManager.notify(0, notification);//第一个参数为自定义的通知唯一标识
重点是setLatestEventInfo( )方法的最后一个参数!!!!它是一个PendingIntent!!!!!!!!!
这里使用到了PendingIntent(pend本意是待定,不确定的意思)
PendingIntent可以看作是对Intent的包装。PendingIntent主要持有的信息是它所包装的Intent和当前Application的Context。正由于PendingIntent中保存有当前Application的Context,使它赋予带他程序一种执行的Intent的能力,就算在执行时当前Application已经不存在了,也能通过存在PendingIntent里的Context照样执行Intent。
PendingIntent的一个很好的例子:
SmsManager的用于发送短信的方法:
sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent);
第一个参数:destinationAddress对方手机号码
第二个参数:scAddress短信中心号码一般设置为空
第三个参数:text短信内容
第四个参数:sentIntent判断短信是否发送成功,如果你没有SIM卡,或者网络中断,则可以通过这个itent来判断。注意强调的是“发送”的动作是否成功。那么至于对于对方是否收到,另当别论
第五个参数:deliveryIntent当短信发送到收件人时,会收到这个deliveryIntent。即强调了“发送”后的结果
就是说是在"短信发送成功"和"对方收到此短信"才会激活 sentIntent和deliveryIntent这两个Intent。这也相当于是延迟执行了Intent
上面两个例子可以理解,PendingIntent就是一个可以在满足一定条件下执行的Intent,它相比于Intent的优势在于自己携带有Context对象,这样他就不必依赖于某个activity才可以存在。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android中pendingIntent的深入理解
# Android pendingIntent与Intent 区别
# 第一个
# 第二个
# 管理器
# 第三个
# 要得
# 的是
# 人时
# 状态栏
# 是一个
# 我是
# 是在
# 很好
# 是一种
# 他就
# 才会
# 也能
# 另当别论
# 它是
# 这也
# 这两个
相关文章:
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
如何批量查询域名的建站时间记录?
5种Android数据存储方式汇总
海南网站制作公司有哪些,海口网是哪家的?
,巨量百应是干嘛的?
建站之星如何实现五合一智能建站与营销推广?
如何基于云服务器快速搭建个人网站?
如何用好域名打造高点击率的自主建站?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
网站设计制作企业有哪些,抖音官网主页怎么设置?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
图册素材网站设计制作软件,图册的导出方式有几种?
python的本地网站制作,如何创建本地站点?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
已有域名和空间如何搭建网站?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
建站之星如何开启自定义404页面避免用户流失?
广东企业建站网站优化与SEO营销核心策略指南
盘锦网站制作公司,盘锦大洼有多少5G网站?
c# 在ASP.NET Core中管理和取消后台任务
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
建站之星IIS配置教程:代码生成技巧与站点搭建指南
建站VPS推荐:2025年高性能服务器配置指南
如何在西部数码注册域名并快速搭建网站?
想学网站制作怎么学,建立一个网站要花费多少?
建站之星ASP如何实现CMS高效搭建与安全管理?
如何在阿里云域名上完成建站全流程?
建站上传速度慢?如何优化加速网站加载效率?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
在线制作视频网站免费,都有哪些好的动漫网站?
如何快速启动建站代理加盟业务?
C++时间戳转换成日期时间的步骤和示例代码
如何快速生成可下载的建站源码工具?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
黑客如何通过漏洞一步步攻陷网站服务器?
建站主机如何安装配置?新手必看操作指南
如何做网站制作流程,*游戏网站怎么搭建?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
建站之星如何实现PC+手机+微信网站五合一建站?
建站ABC备案流程中有哪些关键注意事项?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
公司网站的制作公司,企业网站制作基本流程有哪些?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
宝塔建站无法访问?如何排查配置与端口问题?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
详解jQuery停止动画——stop()方法的使用
攀枝花网站建设,攀枝花营业执照网上怎么年审?
*请认真填写需求信息,我们会在24小时内与您取得联系。