PendingIntent:
等待的,未决定的Intent。一种特殊的Intent。
区别:
Intent的执行立刻的,pendingIntent的执行不是立刻的。
PendingIntent就是一个可以在满足一定条件下执行的Intent,
它相比于Intent的优势在于自己携带有Context对象,这样他就不必依赖于某个activity才可以存在。
目的:
在于它所包含的Intent的操作的执行是需要满足某些条件的。
主要的使用的地方和例子:通知Notificatio的发送,短消息SmsManager的发送和警报器AlarmManager的执行等等。
静态方法 :
getActivity(Context, int, Intent, int)
,
getBroadcast(Context, int, Intent, int)
getService(Context, int, Intent, int)
运用举例:
AlarmManager称为全局定时器,是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent。
简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent,
通常我们使用 PendingIntent
public void
set
(int type, long triggerAtMillis, PendingIntent operation)
功能:用于设置一次性闹钟
第一个参数表示闹钟类型,
第二个参数表示触发这个闹钟要等待的时间,与type相关
第三个参数闹钟响应的动作
参数type:
AlarmManager.ELAPSED_REALTIME 表示闹钟在手机睡眠状态下不可用,该状态下闹钟使用相对时间(相对于系统启动开始),状态值为3;
AlarmManager.ELAPSED_REALTIME_WAKEUP 表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟也使用相对时间,状态值为2;
AlarmManager.RTC
表示闹钟在睡眠状态下不可用,该状态下闹钟使用绝对时间,即当前系统时间,状态值为1;
AlarmManager.RTC_WAKEUP 表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟使用绝对时间,状态值为0;
AlarmManager.POWER_OFF_WAKEUP 表示闹钟在手机关机状态下也能正常进行提示功能,该状态下闹钟也是用绝对时间,状态值为4;不过我测试的时候并没有,这个常量,估计和SDK有关。
参数operation:绑定了闹钟的执行动作,比如发送一个广播、给出提示等等。