Notification中PendingInten…
来源:互联网 发布:上海知名欧美外企 知乎 编辑:程序博客网 时间:2024/06/05 15:19
原文地址:Notification中PendingIntent.Flag的应用作者:雨点点
PendingIntent是一个Intent的描述、包装,给予了这个PendingIntent的组件在指定的事件发生或指定的时间到达时启动Activty、Service或者Broadcast。
根据是要启动Activity、Service还是Broadcast分别对应一个获取PendingIntent的方法
public static PendingIntent getActivity(Context context, intrequestCode,
Intent intent, int flags)
public static PendingIntent getBroadcast(Context context, intrequestCode
Intent intent, int flags)
public static PendingIntent getService(Context context, intrequestCode,
Intent intent, int flags)
三个函数的参数都相同,其中最后一个参数flags在文档中是这样解析的:
flags: May beFLAG_ONE_SHOT,LAG_NO_CREATE,LAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT ,or any of the flags as supported byIntent.fillIn() to control which unspecified partsof the intent that can be supplied when the actual sendhappens.
目前为止只提供FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT,FLAG_UPDATE_CURRENT这四个flag
FLAG_ONE_SHOT:this PendingIntent can only be usedonce. If set, after send() is called on it, it will beautomatically canceled for you and any future attempt to sendthrough it will fail.
利用FLAG_ONE_SHOT获取的PendingIntent只能使用一次,即使再次利用上面三个方法重新获取,再使用PendingIntent也将失败。
FLAG_NO_CREATE:if the described PendingIntent doesnot already exist, then simply return null instead of creatingit.
利用FLAG_NO_CREAT获取的PendingIntent,若描述的Intent不存在则返回NULL值.
FLAG_CANCEL_CURRENT:if the described PendingIntentalready exists, the current one is canceled before generating a newone. You can use this to retrieve a new PendingIntent when you areonly changing the extra data in the Intent; by canceling theprevious pending intent, this ensures that only entities given thenew data will be able to launch it. If this assurance is not anissue, consider FLAG_UPDATE_CURRENT.
如果描述的PendingIntent已经存在,则在产生新的Intent之前会先取消掉当前的。你可用使用它去检索新的Intent,如果你只是想改变Intent中的额外数据的话。通过取消先前的Intent,可用确保只有最新的实体可用启动它。如果这一保证不是问题,考虑flag_update_current。
FLAG_UPDATE_CURRENT: if the describedPendingIntent already exists, then keep it but its replace itsextra data with what is in this new Intent. This can be used if youare creating intents where only the extras change, and don't carethat any entities that received your previous PendingIntent will beable to launch it with your new extras even if they are notexplicitly given to it.
最经常使用的是FLAG_UPDATE_CURRENT,因为描述的Intent有更新的时候需要用到这个flag去更新你的描述,否则组件在下次事件发生或时间到达的时候extras永远是第一次Intent的extras。
上面4个flag中最经常使用的是FLAG_UPDATE_CURRENT,因为描述的Intent有更新的时候需要用到这个flag去更新你的描述,否则组件在下次事件发生或时间到达的时候extras永远是第一次Intent的extras。
使用FLAG_CANCEL_CURRENT也能做到更新extras,只不过是先把前面的extras清除,另外FLAG_CANCEL_CURRENT和FLAG_UPDATE_CURRENT的区别在于能否新new一个Intent,FLAG_UPDATE_CURRENT能够新new一个Intent,而FLAG_CANCEL_CURRENT则不能,只能使用第一次的Intent。
此外还需要注意参数:
int requestCode : Private request code for the sender(currently not used).
PendingIntent contentIntent =PendingIntent.getActivity(context,
num, intent, PendingIntent.FLAG_UPDATE_CURRENT);
对于FLAG_UPDATE_CURRENT,如果上面的requestCode为常量,则对于先后出现的若干Notification,则所有对应的Intent里面的extra被更新为最新的,就是全部同一为最后一次的。
相反,如果num每次不一样,则里面的Inent的数据没被更新。
对于FLAG_CANCEL_CURRENT,则只响应最前面的第一条Notifiacation,后面所有的不响应....
使用请参考:http://txlong-onz.iteye.com/blog/1142737
根据是要启动Activity、Service还是Broadcast分别对应一个获取PendingIntent的方法
public static PendingIntent getActivity(Context context, intrequestCode,
public static PendingIntent getBroadcast(Context context, intrequestCode
public static PendingIntent getService(Context context, intrequestCode,
三个函数的参数都相同,其中最后一个参数flags在文档中是这样解析的:
flags:
目前为止只提供FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT,FLAG_UPDATE_CURRENT这四个flag
FLAG_ONE_SHOT:this PendingIntent can only be usedonce. If set, after send() is called on it, it will beautomatically canceled for you and any future attempt to sendthrough it will fail.
利用FLAG_ONE_SHOT获取的PendingIntent只能使用一次,即使再次利用上面三个方法重新获取,再使用PendingIntent也将失败。
FLAG_NO_CREATE:if the described PendingIntent doesnot already exist, then simply return null instead of creatingit.
利用FLAG_NO_CREAT获取的PendingIntent,若描述的Intent不存在则返回NULL值.
FLAG_CANCEL_CURRENT:if the described PendingIntentalready exists, the current one is canceled before generating a newone. You can use this to retrieve a new PendingIntent when you areonly changing the extra data in the Intent; by canceling theprevious pending intent, this ensures that only entities given thenew data will be able to launch it. If this assurance is not anissue, consider FLAG_UPDATE_CURRENT.
如果描述的PendingIntent已经存在,则在产生新的Intent之前会先取消掉当前的。你可用使用它去检索新的Intent,如果你只是想改变Intent中的额外数据的话。通过取消先前的Intent,可用确保只有最新的实体可用启动它。如果这一保证不是问题,考虑flag_update_current。
FLAG_UPDATE_CURRENT: if the describedPendingIntent already exists, then keep it but its replace itsextra data with what is in this new Intent. This can be used if youare creating intents where only the extras change, and don't carethat any entities that received your previous PendingIntent will beable to launch it with your new extras even if they are notexplicitly given to it.
最经常使用的是FLAG_UPDATE_CURRENT,因为描述的Intent有更新的时候需要用到这个flag去更新你的描述,否则组件在下次事件发生或时间到达的时候extras永远是第一次Intent的extras。
上面4个flag中最经常使用的是FLAG_UPDATE_CURRENT,因为描述的Intent有更新的时候需要用到这个flag去更新你的描述,否则组件在下次事件发生或时间到达的时候extras永远是第一次Intent的extras。
使用FLAG_CANCEL_CURRENT也能做到更新extras,只不过是先把前面的extras清除,另外FLAG_CANCEL_CURRENT和FLAG_UPDATE_CURRENT的区别在于能否新new一个Intent,FLAG_UPDATE_CURRENT能够新new一个Intent,而FLAG_CANCEL_CURRENT则不能,只能使用第一次的Intent。
此外还需要注意参数:
int requestCode : Private request code for the sender(currently not used).
PendingIntent contentIntent =PendingIntent.getActivity(context,
num, intent, PendingIntent.FLAG_UPDATE_CURRENT);
对于FLAG_UPDATE_CURRENT,如果上面的requestCode为常量,则对于先后出现的若干Notification,则所有对应的Intent里面的extra被更新为最新的,就是全部同一为最后一次的。
相反,如果num每次不一样,则里面的Inent的数据没被更新。
对于FLAG_CANCEL_CURRENT,则只响应最前面的第一条Notifiacation,后面所有的不响应....
使用请参考:http://txlong-onz.iteye.com/blog/1142737
0 0
- Notification中PendingInten…
- PendingInten
- Android pendingInten 用法详解
- 提示服务Notification在Android中…
- POCO中Notification分析
- Notification中使用TaskStackBuilder
- android中notification使用方法
- Android中使用Notification
- Notification中显示进度条
- Notification中显示ProgressBar组件
- Android中Notification的用法
- 在Android中使用Notification
- 自定义 Notification中 布局界面
- 在notification中设置PendingIntent
- Android中Notification的使用
- Notification中PendingIntent的陷阱
- notification学习--持续更新中。。。
- Android中Notification的使用
- java try、catch、finally及finally执行顺序详解
- LisView、GridView、RecyclerView的高度wrap_content
- 【怎样使用 GitHub?】Fadeoc Khaos的回答
- js简单的设置快捷键,hotkeys捕获键盘键和组合键的输入
- eclipse注释里插入当前系统时间
- Notification中PendingInten…
- Notepad++如何设置行高
- android genymotion模拟器怎么使用以及和google提供的模拟器性能对比
- error connection refused
- 如何让myeclipse自动提示内容
- Java中int和String互相转换的多种…
- 同平台升级 oracle 10 到 oracle11g的一些考虑和实际操作
- StringBuffer换行
- 斐波那契变化题目