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)
答案 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
中的内容。