バックグラウンド:
AlarmManager経由のアラームにPendingIntentを使用しています。
問題:
最初は、以前のものをキャンセルするために、アラームを開始する前に使用した正確なrequestCodeを提供する必要があると思いました。
しかし、キャンセルAPIが言うように、私は間違っていることがわかりました。
インテントが一致するアラームを削除します。(filterEquals(Intent)で定義されているように)Intentがこのアラームと一致する任意のタイプのアラームはキャンセルされます。
「filterEquals」を見て、ドキュメントは言う:
インテント解決(フィルタリング)の目的で、2つのインテントが同じかどうかを判断します。つまり、アクション、データ、タイプ、クラス、およびカテゴリーが同じである場合です。これは、インテントに含まれる追加データを比較しません。
「requestCode」が何のためにあるのかわかりません...
質問:
「requestCode」は何に使用されますか?
同じ「requestCode」で複数のアラームを作成するとどうなりますか?それらは互いに上書きしますか?
If you truly need multiple distinct PendingIntent objects active at the same time (such as to use as two notifications that are both shown at the same time), then you will need to ensure there is something that is different about them to associate them with different PendingIntents. This may be any of the Intent attributes considered by Intent#filterEquals(Intent), or different request code integers supplied.