0

前回アプリを実行したときに設定されたアラームをキャンセルしようとしています。このアラームには、で設定されたPendingIntentと、で設定PendingIntent.getBroadcastされたいくつかの変数を含む内部インテントがありますintent.putExtra。私の質問はこれですalarmManager.cancel(pendingIntent)。pendingIntentがアラームの設定に使用されたものと同じ場所を呼び出すことでアラームをキャンセルできることを知っています。しかし、インテントに配置された変数が変更された場合でも、アラームはキャンセルされますか?たとえば、intent.putExtra( "Joe")を使用してアラームを設定しました。ここで、Joeは連絡先の名前です。後でアプリを閉じて、再実行すると「Joe」のアラームをキャンセルしようとしましたが、ユーザーが連絡先の名前を「Jones」に変更しました。インテントに入れた変数を知らなくてもアラームをキャンセルできますか?

ありがとう!

4

2 に答える 2

1

この質問(ドキュメントを参照) によると、インテントが別のインテントと等しいかどうかを確認するときに、使用して追加しputExtraたものは考慮されません。

余分なデータが変更されても問題ありません。

于 2013-03-02T21:11:35.350 に答える
1

一部のデータが異なっていても、とにかくアラームをキャンセルする必要があると思います。cancelメソッドは次のように述べています。

(filterEquals(Intent) で定義されているように) Intent がこれと一致する任意のタイプのアラームはキャンセルされます。

そして、次のfilterEqualsように述べています。

インテントの解決 (フィルタリング) のために、2 つのインテントが同じかどうかを判断します。つまり、アクション、データ、タイプ、クラス、およびカテゴリが同じである場合です。これは、インテントに含まれる余分なデータを比較するものではありません

とにかく、私はまだそれを自分でテストします。

于 2013-03-02T21:12:47.323 に答える