安卓 notification 使用pendingintent传值时传值重复或无效的问题

来源:互联网 发布:淘宝补单靠谱吗? 编辑:程序博客网 时间:2024/06/07 06:02
 PendingIntent pendingIntent2 = PendingIntent.getActivity(mContent, 0,  

    intent, PendingIntent.FLAG_UPDATE_CURRENT);  

pendingintent.getactivity方法中第二个参数和第4个参数会影响intent中extras的内容 第二个值是id  相当于这个pendingintent的标签 同一个标签的pendingintent只会显示最新的 intent也是最新的intent  第4个参数会影响intent的extras的内容 这里常用的flag标签如下

FLAG_ONE_SHOT:this PendingIntent can only be used once. If set, after send() is called on it, it will be automatically canceled for you and any future attempt to send through it will fail.

FLAG_NO_CREATE:if the described PendingIntent does not already exist, then simply return null instead of creating it.

FLAG_CANCEL_CURRENT:if the described PendingIntent already exists, the current one is canceled before generating a new one. You can use this to retrieve a new PendingIntent when you are only changing the extra data in the Intent; by canceling the previous pending intent, this ensures that only entities given the new data will be able to launch it. If this assurance is not an issue, consider FLAG_UPDATE_CURRENT.

FLAG_UPDATE_CURRENT: if the described PendingIntent already exists, then keep it but its replace its extra data with what is in this new Intent. This can be used if you are creating intents where only the extras change, and don't care that any entities that received your previous PendingIntent will be able to launch it with your new extras even if they are not explicitly given to it.

其中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。

0 0