読者です 読者をやめる 読者になる 読者になる

うさがにっき

読書感想文とプログラムのこと書いてきます

NotificationにおけるPendingIntent仕様時の注意

概要

Notificationで使用するPendingIntentの使う際には第四引数を

PendingIntent.FLAG_CANCEL_CURRENT

にする

まとめ

Notificationに設定するPendingIntentを以下のようにしているサイトをよく見る

PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);

これには少し問題がある
以前に発行したPendingIntentが生きている場合、intentに設定したExtrasが反映されないのだ
さらに、PendingIntentはアプリの起動とは関係なく、Androidのシステムによって管理されているため、アプリを落としてもPendingIntentは作り直されない
つまり、アプリを再起動してもintentに設定したExtrasが更新されず、ずっと同じ値が取得され続けてしまうという訳だ

これを防ぐには以下のようにする

PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

こうすることにより、以前のPendingIntentをキャンセルして、現在のintentをもとにしてPendingIntentを作り直してくれる