在PendingIntent.FLAG_UPDATE_CURRENT和Android中有什么不同?

时间:2018-05-02 06:14:16

标签: android

PendingIntent.FLAG_UPDATE_CURRENT与Android中的0有什么不同?

var aa=  PendingIntent.getService(mContext, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT)

var bb=  PendingIntent.getService(mContext, 0, myIntent, 0)

3 个答案:

答案 0 :(得分:0)

如果您将0作为旗帜传递,则表示您没有将标记传递给PendingIntent

存在差异,至少与数字有关。

查看当前常量是什么

public static final int FLAG_UPDATE_CURRENT = 134217728;

来自文档FLAG_UPDATE_CURRENT的是:

  

指示如果描述的PendingIntent已经存在的标志,则保留它,但将其额外数据替换为此新Intent中的内容。用于getActivity(Context,int,Intent,int),getBroadcast(Context,int,Intent,int)和getService(Context,int,Intent,int)。

如果您要创建只有附加内容更改的意图,并且不关心接收到您之前的PendingIntent的任何实体将能够使用您的新附加功能启动它,即使它们没有明确赋予它,也可以使用

有关此问题的详细信息,请查看此answer

答案 1 :(得分:0)

设置PendingIntent.FLAG_UPDATE_CURRENT

基于PendingIntent.FLAG_UPDATE_CURRENT的文档:

  

表示如果描述的PendingIntent已存在的标志,   然后保留它,但用这个新的东西替换它的额外数据   意图。

<强>用法

  

如果您要创建只有附加内容更改的意图,并且不关心接收到您之前的PendingIntent的任何实体将能够使用您的新附加功能启动它,即使它们没有明确赋予它,也可以使用

将值设置为0

设置无标志,即0作为flags参数,如果有一个与提供的参数匹配,则返回现有的PendingIntent。如果没有匹配的PendingIntent,则会创建并返回一个新的

答案 2 :(得分:0)

要传递0:

致电时:

PendingIntent pi=PendingIntent.getActivity(this, 1, i, 0);

0作为flags参数表示您没有设置任何标志。


如果您致电:

PendingIntent pii=PendingIntent.getActivity(this, 1, i, 0);
再次

,并且您传递的Intent与第一个呼叫中的Intent相匹配,那么您将获得与第一个呼叫中相同的PendingIntent。 “匹配”表示ACTION,DATA,CATEGORY和COMPONENT都相同。匹配时,其他字符为not considered

如果您在第二个呼叫的Intent中提供其他附加功能,则这些附加内容在发送时将不会出现在PendingIntent中。会使用第一个调用中的Intent中的其他功能。

用于传递 PendingIntent.FLAG_UPDATE_CURRENT

如果所描述的PendingIntent 已经存在,则保留它,但将其额外数据替换为新Intent中的内容。