私のアプリは、ユーザーの操作に繰り返しアラームを設定します。アラームマネージャーでブロードキャストに設定された間隔時間が変更される場合があります。
エキストラの邪魔になるものはあまりありません。
この場合、更新フラグまたはキャンセルフラグの方が優れていますか?
ありがとう
エクストラを使用していない場合は、これらのフラグを指定する必要はありません。これらは、システムがエクストラをPendingIntent
で処理する方法を変更するだけです。現在のマッチング(システムPendingIntent
によってキャッシュされます)のエクストラを置き換えるか、キャンセルして新しいものを作成します。詳細については、ドキュメントを参照してください: http://developer.Android.com/reference/Android/app/PendingIntent.html#FLAG_CANCEL_CURRENT
決してアラームを設定するときに使用するPendingIntentsでFLAG_CANCEL_CURRENTを使用します。別の時間にアラームを再スケジュールする場合は、フラグはまったく必要ありません。フラグがゼロの重複するPendingIntentを作成し、それを使用してアラームをset()します。これにより、既存のアラームが暗黙的にキャンセルされ、新しく指定された時間に設定されます。ただし、新しいPendingIntentを作成したときにFLAG_CANCEL_CURRENTを使用した場合、Alarm Managerは、現在キャンセルされているPendingIntentと「同じ」であると認識できなくなり、古いものがぶら下がって配信不能になり、メモリを消費してしまいます。とCPU。このバグのあるアプリは、システム内で文字通り何百もの古いアラームを発生させ、パフォーマンスとメモリ使用量に大きな打撃を与えるのを見てきました。
既存のアラームを実際に再スケジュールせずにエクストラを変更したいだけの場合は、それがFLAG_UPDATE_CURRENTの目的です。スケジュールを変更する場合は、フラグをまったく使用しないでください。