PendingIntent(延迟执行的 Intent)
2016-11-19 16:54
459 查看
Intent 更加倾向于去立即执行某个动作,而 PendingIntent 更加倾向于在某个合适的时机去执行某个动作。所以,也可以把 PendingIntent 简单地理解为延迟执行的 Intent。
主要用来在某个事件完成后执行特定的Action
1、获取PendingIntent实例
如果是启动服务,PendingIntent对象的获取就应该采用PendingIntent.getService()方法;
如果是广播,PendingIntent对象的获取就应该采用 PendingIntent.getBroadcast()方法;
如果是Activity,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。
主要用来在某个事件完成后执行特定的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。
相关文章推荐
- Android之Handler实现延迟执行
- iOS 设置 延迟执行 与 取消延迟执行 方法 以及对 run loop 初步认识
- android中延迟执行某个任务
- 可执行文件延迟加载
- AsyncTask delay延迟执行 或者顺序执行 问题
- javascript延迟,时间延迟执行
- IEnumerable的谨慎使用和IQueryable 的延迟执行
- [转]Intent和PendingIntent的区别
- linux sleep命令参数及用法详解(linux休眠延迟执行命令)
- 对vue事件的延迟执行实例讲解
- Intent和PendingIntent的区别
- jquery 延迟执行实例介绍
- C#使用LINQ中Enumerable类方法的延迟与立即执行的控制
- Oracle 存储过程 延迟执行 DBMS_LOCK.SLEEP(60);
- Android back键ANR,与onPause,onDestory “延迟执行”的问题研究
- 浅谈iOS开发中方法延迟执行的几种方式(转载)
- 本文主要分享自己在appstore项目中的性能调优点,包括同步改异步、缓存、Layout优化、数据库优化、算法优化、延迟执行等
- js异步延迟执行
- 为hover事件加上延迟jquery.hoverIntent
- new Handler().postDelayed() 延迟intent跳转