问题描述
从待定意向的文档 FLAG_CANCEL_CURRENT
在Android的:
From the documentation of Pending Intent FLAG_CANCEL_CURRENT
in Android:
通过取消previous未决的意图,这确保了只有赋予新数据的实体将能够启动它。如果这个保证是不是一个问题,可以考虑FLAG_UPDATE_CURRENT
谁能解释一下这行的意思?
Can anyone explain what this line means?
推荐答案
在你创建一个新的 PendingIntent
与 FLAG_CANCEL_CURRENT
,什么都拿着previous PendingIntent
为同一意图
将不再能够执行该原始 PendingIntent
。
Once you create a new PendingIntent
with FLAG_CANCEL_CURRENT
, anything holding a previous PendingIntent
for the same Intent
will no longer be able to execute that original PendingIntent
.
例如,假设我们有这样的:
For example, suppose we have this:
Intent i=new Intent(this, Foo.class);
i.putExtra("key", 1);
PendingIntent pi=PendingIntent.getActivity(this, 0, i, 0);
和我们使用 PendingIntent
用,也就是说,一个通知
。
and we use that PendingIntent
with, say, a Notification
.
后来,我们执行:
Intent i=new Intent(this, Foo.class);
i.putExtra("key", 2);
PendingIntent pi2=PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
在这一点上, PendingIntent 创建最初( PI
)不再有效,而无论我们使用 PI2
为将看到更新的额外价值( 2
)。
At this point, the PendingIntent
created originally (pi
) is no longer valid, and whatever we use pi2
for will see the updated extra value (2
).
如果,相反,我们所做的:
If, instead, we did:
Intent i=new Intent(this, Foo.class);
i.putExtra("key", 2);
PendingIntent pi2=PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
在这一点上, PI 和 PI2
转口present中的一样 PendingIntent
,都将看到更新后的额外价值( 2
)。
At this point, pi
and pi2
both represent the same PendingIntent
, and both will see the updated extra value (2
).
或者,如果我们做的:
Intent i=new Intent(this, Foo.class);
i.putExtra("key", 2);
PendingIntent pi2=PendingIntent.getActivity(this, 0, i, 0);
在这一点上, PI 和 PI2
还是重新present相同 PendingIntent
,但演员不变,如 getActivity()
返回的原的 PendingIntent
不应用新的附加功能。
At this point, pi
and pi2
still represent the same PendingIntent
, but the extras are unchanged, as getActivity()
returns the original PendingIntent
without applying the new extras.
大多数时候, FLAG_UPDATE_CURRENT
是当你试图替换 PendingIntent
里面的额外罚款的答案。
Most times, FLAG_UPDATE_CURRENT
is a fine answer when you are trying to replace extras inside a PendingIntent
.
这篇关于澄清对文档进行PendingIntent.FLAG_CANCEL_CURRENT的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!