Android PendingIntent小结

官方文档的解释

A description of an Intent and target action to perform with it.

注意有一个target action,既PendingIntent是针对特定的目标活动的。

PendingIntent的实例可以通过 getActivity(Context, int, Intent, int),getActivities(Context, int, Intent[], int)getBroadcast(Context, int, Intent, int), and getService(Context, int, Intent, int);这些方法来得到。通过这些方法得到的PendingIntent可以交给其他的应用,让其他应用随后来执行你所描述动作。

通过传递PendingIntent给其他应用,就好像能够让别的应用执行你指定的运算,这就好像别的应用也成了你的应用的一部分。

PendingIntent就是一个向外部应用(例如NotificationManager(通知),AlarmManager(铃声),桌面的AppWidgetManager)传递的意图。PendingIntent允许外部应用来使用你的应用的permission来执行预先确定的代码。

如果你向外部应用传递一个intent,那个应用则传送或者广播你给的那个intent,他们会根据自己的permission来执行intent,但是如果你传递的是一个PendingIntent,你将创建你自己的permission,外部应用将会根据你的permission来执行Pendingintent中含有的intent

另外,PendingIntent是一个不会立即开始的intent。

当调用了startActivity(intent)或者StartService(intent)时,一般的intent会立即开始,而PendingIntent会在需要时才开始。

PendingIntent在Notification中的应用实例

首先我在MainActivity中创建通知

使用一个Button来创建消息

运行效果

又例如在NfcAdapter的enableForegroundDispatch方法中,参数里面需要加入PendingIntent

建立MainActivity 和 SecondActivity

在MainActivity中

当启动MainActivity之后,将手机靠近NFC标签才会启动SecondActivity

打个不恰当的比喻,可以把PendingIntent比喻成地雷,只有当踩中这个地雷的时候,它才会爆炸,因此只有当我们触发了启动PendingIntent的动作时,才会启动PendingIntent内部的Intent。

时间: 2024-08-20 16:27:34

Android PendingIntent小结的相关文章

android fota小结

fota在make中有个关键的目标target-files-package,该目标生成一个用于做升级包的zip文件.升级包中的内容是定义好的文件列表. 同时有一个主要的脚本./build/tools/releasetools/ota_from_target_files,这个脚本可以根据不同的参数生成完整的升级包和差分升级包. 完整的升级包是采用覆盖的形式升级,差分升级则是采用patch的方式升级. 在update-binary中会有升级的函数定义,在update-script中会调用不同的函数进

Android技巧小结之新旧版本Notification

最近开发用到了通知功能,但有几个地方老是提示deprecated,然后就找了篇文章学习了下新旧版本的不同. Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API level  > 11),Notification类中的一些方法被Android声明deprecated(弃用),其实基本上相当于全部弃用了,因为这个类本身方法就少得可怜. Android官方声明弃用,一定有它的理由,虽然我也不知道是什么.奈何本人轻度强迫症患者,人家都建议你不要用了,那就不要老是恪守着N年

Android PendingIntent的使用

pendingIntent字面意义:等待的,未决定的Intent. 要得到一个pendingIntent对象,使用方法类的静态方法 getActivity(Context, int, Intent, int), getBroadcast(Context, int, Intent, int), getService(Context, int, Intent, int)  分别对应着Intent的3个行为,跳转到一个activity组件.打开一个广播组件和打开一个服务组件. 参数有4个,比较重要的事

Android Fragment小结

为何使用Fragment? 实现UI的灵活组建与拆分,与Activity配合可保持Activity的视图不变,转而操作Fragment,就像Activity的模块与组建一样.同时解决了 在平板上UI的适应性. <Android编程权威指南>一书作者提出了AUF(即Always Use Fragment)原则----暂且相信他 Fragment 的生命周期依赖于Activity的生命周期,并且有自己独特的方法,不多赘述. 1.获取Fragment的视图(layout转成视图对象) 通过重写fra

Android存储小结

转自:http://www.liaohuqiu.net/cn/posts/storage-in-android/ android系统自身自带有存储,另外也可以通过sd卡来扩充存储空间.前者好比pc中的硬盘,后者好移动硬盘. 前者空间较小,后者空间大,但后者不一定可用. 开发应用,处理本地数据存取时,可能会遇到这些问题: 需要判断sd卡是否可用: 占用过多机身内部存储,容易招致用户反感,优先将数据存放于sd卡; 应用数据存放路径,同其他应用应该保持一致,应用卸载时,清除数据: 标新立异在sd卡根目

Android开发经验分享(5)Android优化小结

项目中何时不会用到优化呢,现把一些优化的小经验总结下 1.万恶的static static是个好东西,声明赋值调用就是那么的简单方便,但是伴随而来的还有性能问题.由于static声明变量的生命周期其实是和APP的生命周期一样的,有点类似与Application.如果大量的使用的话,就会占据内存空间不释放,积少成多也会造成内存的不断开销,直至挂掉.static的合理使用一般用来修饰基本数据类型或者轻量级对象,尽量避免修复集合或者大对象,常用作修饰全局配置项.工具类方法.内部类. 2.无关引用 很多

android Menory 小结

不建议在Activity中使用static 变量,考虑使用Application.当然,static final例外 但Application也不要cache某个Activity使用的View,如果cache也一定要在这个Activity Destroy()时手动清空Application中对view的cache. 线程造成内存泄露. public class MyActivity extends Activity { @Override public void onCreate(Bundle 

Android AIDL 小结

1.AIDL (Android Interface Definition Language ) 2.AIDL 适用于 进程间通信,并且与Service端多个线程并发的情况,如果只是单个线程 可以使用 Messenger ,如果不需要IPC 可以使用Binder 3.AIDL语法:基础数据类型都可以适用,List Map等有限适用.static field 不适用. 4.AIDL基本用法 第一步:实现.aidl文件 接口描述文件 1.导入的包名 2.如果有使用Object对象,需要该对象 impl

Android PendingIntent的getActivity()、getBroadcast()、getService()方法的区别

pendingIntent是一种特殊的Intent.主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的.pendingIntent执行的操作实质上是参数传进来的Intent的操作,但是使用pendingIntent的目的在于它所包含的Intent的操作的执行是需要满足某些条件的. 主要的使用的地方和例子:通知Notificatio的发送,短消息SmsManager的发送和警报器AlarmManager的执行等等. PendingIntent中 getActivi