您的位置:首页 > 其它

PendingIntent(延迟执行的 Intent)

2016-11-19 16:54 459 查看
Intent 更加倾向于去立即执行某个动作,而 PendingIntent 更加倾向于在某个合适的时机去执行某个动作。所以,也可以把 PendingIntent 简单地理解为延迟执行的 Intent。

主要用来在某个事件完成后执行特定的Action

1、获取PendingIntent实例

PendingIntent pendingIntent;


如果是启动服务,PendingIntent对象的获取就应该采用PendingIntent.getService()方法;

pendingIntent=PendingIntent.getService();


如果是广播,PendingIntent对象的获取就应该采用 PendingIntent.getBroadcast()方法;

pendingIntent=PendingIntent.getBroadcast();


如果是Activity,PendingIntent对象的获取就应该采用PendingIntent.getActivity()方法。

pendingIntent=PendingIntent.getActivity();


2、四个参数(Context context, int requestCode, Intent intent, int flags)

第一个参数是 Context;

第二个参数一般用不到,通常都是传入 0 即可;

第三个参数是一个 Intent 对象,通过这个对象构建出PendingIntent 的“意图” 。

第四个参数用于确定 PendingIntent 的行为

FLAG_CANCEL_CURRENT:如果当前系统中已经存在一个相同的PendingIntent对象,那么就将先将已有的PendingIntent取消,然后重新生成一个PendingIntent对象。

FLAG_NO_CREATE:如果当前系统中不存在相同的PendingIntent对象,系统将不会创建该PendingIntent对象而是直接返回null。

FLAG_ONE_SHOT:该PendingIntent只作用一次。在该PendingIntent对象通过send()方法触发过后,PendingIntent将自动调用cancel()进行销毁,那么如果你再调用send()方法的话,系统将会返回一个SendIntentException。

FLAG_UPDATE_CURRENT:如果系统中有一个和你描述的PendingIntent对等的PendingInent,那么系统将使用该PendingIntent对象,但是会使用新的Intent来更新之前PendingIntent中的Intent对象数据,例如更新Intent中的Extras。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: