私はPendingIntent
とAlarmManager
を使って目覚まし時計のアプリを作っています。 PendingIntentをキャンセルするには、それを正確に再作成する必要があります。私のアプリでは、他の多くの目覚まし時計アプリと同様に、各アラームのオン/オフを切り替えるスイッチ付きのアラームのリストがあります。オフに切り替えたときに、私は現在、PendingIntentを再作成し、以下を使用してそれをキャンセル:PendingIntentをオブジェクトに格納して後でアラームをキャンセルするのは悪い習慣ですか?
Intent intent = new Intent(context, MyBroadcastReceiver.class);
String id = this.getId().replaceAll("[^0-9]+", "");
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, id, intent, 0);
alarmIntent.cancel();
私は信じて上記のコードの最初の3行は不要です。私がアラームを切り替えると、私はidの他にも多くのアラームの詳細を含むカスタムアラームオブジェクトにアクセスできます。新しいアラームを作成しているときに、新しく作成されたPendingIntentをアラームオブジェクトに格納すると、アラームを作成するために使用されたPendingIntentにアクセスでき、次のように1行で取り消すことができます。
this.getPendingIntent().cancel();
私は意図を再作成したり、IDを取得したり、以前のコードからPendingIntentを再作成する必要はありません。
1)PendingIntentをオブジェクトに格納して、それを再作成するのではなく後で使用すると何か問題はありますか?いいえ。それは簡単な答えのようですが、私はこれまで誰も見ていません。
2)私が気づいていないPendingIntentを再作成する利点はありますか?
ありがとうございます!
助けてくれてありがとう!だから誰かにメッセージを伝える方法がわからないのですが、私の他の質問を見ることができます:https://stackoverflow.com/questions/45381092/how-to-stop-alarm-from-executing-after-pendingintent-has-受け取ったアンドロイド – Michael