全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android中pendingIntent与Intent的深入分析

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小时内与您取得联系。