来自Android中待定意图的文档:FLAG_CANCEL_CURRENT
通过取消之前的待处理意图,这可以确保只有获得新数据的实体才能启动它。如果此保证不是问题,请考虑 FLAG_UPDATE_CURRENT
谁能解释这条线是什么意思?
来自Android中待定意图的文档:FLAG_CANCEL_CURRENT
通过取消之前的待处理意图,这可以确保只有获得新数据的实体才能启动它。如果此保证不是问题,请考虑 FLAG_UPDATE_CURRENT
谁能解释这条线是什么意思?
一旦你创建了一个新PendingIntent
的 with FLAG_CANCEL_CURRENT
,任何持有以前PendingIntent
相同的东西Intent
将不再能够执行那个原始PendingIntent
的。
例如,假设我们有这个:
Intent i=new Intent(this, Foo.class);
i.putExtra("key", 1);
PendingIntent pi=PendingIntent.getActivity(this, 0, i, 0);
我们将它PendingIntent
与 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
)。
相反,如果我们这样做了:
Intent i=new Intent(this, Foo.class);
i.putExtra("key", 2);
PendingIntent pi2=PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
此时,pi
andpi2
都表示相同 PendingIntent
的,并且都将看到更新后的额外值 ( 2
)。
或者,如果我们这样做了:
Intent i=new Intent(this, Foo.class);
i.putExtra("key", 2);
PendingIntent pi2=PendingIntent.getActivity(this, 0, i, 0);
此时,pi
andpi2
仍然表示相同的PendingIntent
,但附加项不变,因为getActivity()
返回原始 PendingIntent
而不应用新的附加项。
大多数FLAG_UPDATE_CURRENT
情况下,当您尝试替换PendingIntent
.