PendingIntent详解

Intent和PendingIntent的区别 简单的总结了Intent和PendtingIntent的区别,经常与alermanger 和notificationmanager一起使用。 立即下载

首先看下pendingIntent和intent的区别

1、pendingIntent是将要发生的action。intent是立即发生的action

2、pendingIntent可以取消。Intent不能取消

3、intent必须在context内执行,所以当程序执行完,intent也终止。

pendingIntent自带context,没有限制。

4、intent在原来的task中运行,pendingIntent在不同的task中运行


pendingIntent主要用于 通知栏(NotificationManager)和发送短信(SmsManager)的监控


下边俩个例子

//获取通知管理器
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
int icon = R.drawable.logo;
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, TouchTest.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, openintent, 0);//当点击消息时就会向系统发送openintent意图
notification.setLatestEventInfo(this, "标题", "我是内容", contentIntent);
mNotificationManager.notify(0, notification);//第一个参数为自定义的通知唯一标识


private final static String SEND_ACTION = "send";
private final static String DELIVERED_ACTION = "delivered";


private void sendSms(String receiver, String text) {
SmsManager s = SmsManager.getDefault();
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(
SEND_ACTION), PendingIntent.FLAG_CANCEL_CURRENT);
final PendingIntent deliveredPI = PendingIntent
.getBroadcast(this, 0, new Intent(DELIVERED_ACTION),
PendingIntent.FLAG_CANCEL_CURRENT);
// 发送完成
registerReceiver(new BroadcastReceiver() {


@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "Send Success!",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(),
"Send Failed because generic failure cause.",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(
getBaseContext(),
"Send Failed because service is currently unavailable.",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(),
"Send Failed because no pdu provided.",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(
getBaseContext(),
"Send Failed because radio was explicitly turned off.",
Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(getBaseContext(), "Send Failed.",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(SEND_ACTION));


// 对方接受完成
registerReceiver(new BroadcastReceiver() {


@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "Delivered Success!",
Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(getBaseContext(), "Delivered Failed!",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(DELIVERED_ACTION));


// 发送短信,sentPI和deliveredPI将分别在短信发送成功和对方接受成功时被广播
s.sendTextMessage(receiver, null, text, sentPI, deliveredPI);
}


另外总结下获取pendingIntent对象的方法

你可以通过getActivity(Context context, int requestCode, Intent intent, int flags)系列方法从系统取得一个用于启动一个Activity的PendingIntent对象,

       可以通过getService(Context context, int requestCode, Intent intent, int flags)方法从系统取得一个用于启动一个Service的PendingIntent对象

        可以通过getBroadcast(Context context, int requestCode, Intent intent, int flags)方法从系统取得一个用于向BroadcastReceiver的Intent广播的PendingIntent对象

手把手教你用Cadence仿真12bit SAR ADC:从电路图到FFT频谱分析(含Simc 18mmrf工艺文件) 本文详细介绍了使用Cadence仿真12bit SAR ADC的全流程,包括电路搭建、仿真环境配置、瞬态仿真优化及FFT频谱分析。基于Simc 18mmrf工艺文件,提供从电路图到性能验证的实战指南,特别分享工程实践中的排错技巧和优化策略,帮助工程师高效完成ADC设计验证。 阅读详情

相关推荐

生成式引擎优化(GEO):启动GEO优化的5个有效策略

随着生成式AI的普及,传统SEO正被GEO(生成式引擎优化)取代。本文提出GEO五大核心策略:用户意图解析、结构化内容设计、语义关键词优化、对话式内容创作和权威信源建设。研究表明,优化后的内容在AI答案中的引用率提升300%,点击率增长27%。文章还介绍了BERT模型、Schema标记等关键技术工具,并指出未来GEO将向多模态优化、实时数据更新方向发展。企业需避免简单堆砌关键词,应建立长期内容策略,通过结构化、权威性内容在AI时代保持竞争优势。

解锁AI流量新红利!🚀 GEO优化(生成引擎优化)助您掌控AI搜索,让AI成为您的品牌最佳代言人! 2785

Android笔记(十七):PendingIntent简介

介绍PendingIntent,并结合实例进行说明。

userhu2012的博客 6412

UE 动态获取 资源缩略图 下载到本地或返回图片信息

UE 动态加载资源缩略图 返回图片信息或保存到本地

qq_46080252的博客 1936

简单聊聊 PendingIntent 与 Intent 的区别

到这里,PendingIntent的内容就讲完了,相信你对PendingIntent的理解已经超过绝大部分同学,你认同吗?

m0_64420071的博客 1986

宝骏kiwi 630 730 560 E100 E200 E300 310 510 610 330 530维修手册电路图资料线路图接线图更新

2020-2022年宝骏RS-3维修手册和电路图。2020-2022年宝骏RS-3维修手册和电路图。2019-2021年宝骏RC-6维修手册和电路图。2019-2021年宝骏RC-6维修手册和电路图。2019-2020年宝骏RS-5维修手册和电路图。2019-2020年宝骏RS-5维修手册和电路图。2019-2020年宝骏RM-5维修手册和电路图。2019-2020年宝骏RM-5维修手册和电路图。2019-2021年宝骏510维修手册和电路图。2019-2021年宝骏510维修手册和电路图。

weixin_45821055的博客 1771

K210视觉项目上位机避坑指南:解决C#解析ESP8266 TCP图像流的乱码、卡顿与连接中断

本文详细解析了K210与ESP8266在视觉项目中的上位机开发问题,重点解决TCP图像流解析中的乱码、卡顿与连接中断问题。通过自定义协议、JPEG流重组、TCP连接优化等实战技巧,提升系统稳定性和性能,适用于嵌入式视觉开发者和C#上位机程序员。

weixin_28730131的博客 402

Android基础——PendingIntent理解

1. PendingIntent认识 PendIntent其实是Intent的封装,这就带来了几个问题: 为什么要有PendingIntent?与Intent有什么区别? PendingIntent的应用场景主要有哪些? 它的内部是如何实现的? 1.1 与Intent的区别 Intent 是意图的意思。Android 中的 Intent 正是取自这个意思,它是一个消息对象,通过它,Andr...

zhewen的博客 3万+

华中科技大学头歌 交通灯系统设计 Lojisim 详细实验报告,实验图,仅供参考

本实验也是参考了许多大神的做法,也是小白一个!有完整实验代码,实验报告,答辩PPT(ppt当时做得仓促,有点拉胯)~ 需要请评论或私QQ:3096524043(有偿~~) 一、数码管驱动 由真值表生成电路 二、四位无符号比较器设计 三、8位无符号比较器设计 四、一位2路选择器设计 五、八位2路选择器设计 六、BCD双向计数器状态机设计 七、BCD双向计数器输出函数设计 ...

FindXY的博客 1万+

pendingIntent详解

pendingIntent字面意义:等待的,未决定的Intent。   pendingIntent对象,使用方法类的静态方法 :       getActivity(Context, int, Intent, int)------->跳转到一个activity组件、     getBroadcast(Context, int, Intent, int)------>打开一个广播组件    

一只攻城的柿子 734

Qt OpenGL 3D 点云数据显示

在Qt中使用OpenGL显示3D点云数据是一个常见的需求,特别是在计算机视觉、机器人学和三维重建等领域。下面我将介绍一个基本的实现方案。

深之JohnChen的专栏 1238

步进电机选型避雷手册:为什么你的42HS电机总丢步?从相数、电流到散热全面拆解

本文深入剖析了42HS步进电机在高速或重载下易出现丢步问题的根本原因。文章指出,选型时不应仅关注静态保持转矩,而需重点分析动态矩频曲线、合理匹配驱动器电流与细分数、进行准确的机械传动惯量计算,并有效管理系统共振与散热。通过全面拆解这些关键因素,为工程师提供了实用的选型避雷指南与系统优化方案。

weixin_29275257的博客 97

Android PendingIntent详解

PendingIntent主要有下面几个静态方法(当然还有其它方法) PendingIntent.getActivity(Contextcontext, int requestCode,Intentintent, int flags) --->启动Activity PendingIntent.getBroadcast(Contextcontext, int...

GracefulGuigui的博客 1887

VMware如何安装img镜像,VMware如何安装openwrt软路由(含相关工具镜像)

VMware如何安装img镜像,VMware如何安装openwrt软路由(含相关工具镜像)

XiaoqiangClub的博客 4005

[Android] PendingIntent详解

转:http://my.oschina.net/u/242041/blog/206710  Intent是一个意图,一个描述了想要启动一个Activity、Broadcast或是Service的意图。它主要持有的信息是它想要启动的组件(Activity、Broadcast或是Service),在开发操作中,需要通过 startActivity , startService 或send

zhangmiaoping23的专栏 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

译:PendingIntent详解

博客源址:译:PendingIntent详解 博客时间:2011-12-11 10:54 本文翻译整理自:http://developer.android.com/reference/android/app/PendingIntent.html public final class PendingIntent extends Object implements Pa

Android移动开发者的专栏 615

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

下一篇: Android构建编译过程
豪豪6
博客等级 码龄14年 6粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值