Androidの Pending IntentFLAG_CANCEL_CURRENT
のドキュメントから:
以前の保留中のインテントをキャンセルすることで、新しいデータを与えられたエンティティのみがそれを起動できるようになります。この保証が問題にならない場合は、FLAG_UPDATE_CURRENT を検討してください。
この行の意味を説明できる人はいますか?
Androidの Pending IntentFLAG_CANCEL_CURRENT
のドキュメントから:
以前の保留中のインテントをキャンセルすることで、新しいデータを与えられたエンティティのみがそれを起動できるようになります。この保証が問題にならない場合は、FLAG_UPDATE_CURRENT を検討してください。
この行の意味を説明できる人はいますか?
で新しい を作成するPendingIntent
と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
とは両方とも同じpi2
を表し、両方とも更新された追加値 ( ) を確認します。 PendingIntent
2
または、実行した場合:
Intent i=new Intent(this, Foo.class);
i.putExtra("key", 2);
PendingIntent pi2=PendingIntent.getActivity(this, 0, i, 0);
この時点で、pi
とpi2
は同じ を表していますPendingIntent
が、エクストラは変更されていません。 asは、新しいエクストラを適用せずにオリジナルgetActivity()
を返します。 PendingIntent
ほとんどの場合、FLAG_UPDATE_CURRENT
内のエクストラを置き換えようとしている場合は、良い答えですPendingIntent
。