来自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);
此时,piandpi2都表示相同 PendingIntent的,并且都将看到更新后的额外值 ( 2)。
或者,如果我们这样做了:
Intent i=new Intent(this, Foo.class);
i.putExtra("key", 2);
PendingIntent pi2=PendingIntent.getActivity(this, 0, i, 0);
此时,piandpi2仍然表示相同的PendingIntent,但附加项不变,因为getActivity()返回原始 PendingIntent而不应用新的附加项。
大多数FLAG_UPDATE_CURRENT情况下,当您尝试替换PendingIntent.