2012-08-27 11 views
5

AlarmManager.setInexactRepeatingという不正確な繰り返しアラームを1時間ごとに発生させるようにスケジュールすると、たとえば、電話機が4時間スタンバイ状態になった後、スリープ状態になるとどうなりますか?システムは同じPendingIntentの行に4つのアラームを出力しますか、または1つのアラームのみを送信しますか?電話が起きたときに届かなかったAlarmManagerがアラームを繰り返すとどうなりますか?

EDIT:もっと注意してドキュメントを読んで、set(int, long, android.app.PendingIntent)方法のドキュメントは言う:アラームインテントは、多くの過去のアラームイベントは、この目的の放送に蓄積されているかを示すことIntent.EXTRA_ALARM_COUNTと呼ばれるint型のデータ余分に配信されます。電話機がスリープしているために配信されなかった定期的なアラームは、配信されたときに1を超えるカウントを持つことがあります。 したがって、電話機がスタンバイ状態から復帰すると、1つのアラームのみが配信され、余分なアラームには不在アラームの数が含まれます。

答えて

0

それはあなたがこの

PendingIntent pending = PendingIntent.getBroadcast(context, 0, i, 
      PendingIntent.FLAG_CANCEL_CURRENT); 

よう 保留中の意図を使用している場合、それはより多くの注意を払ってドキュメントを読む前の保留意図

+1

「PendingIntent.FLAG_CANCEL_CURRENT」は、保留中のインテントオブジェクトの作成/取得中にのみ意味を持ち、私がメインポストで言ったことを避けるという意味ではないと思います。 –

+0

あなたが今作成している保留中の意図(つまり、同じ意図アクションやデータなど)と一致する保留中の意図をすでに作成している場合、システムは古いものを取り消し、新しい保留インテントオブジェクトを作成します。 –

+0

私はそれが前に保留中のインテントをキャンセルするので、それが4回トリガされないことを望みます。 –

1

をcancellsとして、それが4回をトリガー習慣によって異なり、set(int, long, android.app.PendingIntent)方法のドキュメントは言います: アラームインテントには、このインテントブロードキャストに過去のアラームイベントがいくつ蓄積されたかを示すint型のデータ(Intent.EXTRA_ALARM_COUNT)が付属しています。電話機がスリープしているために配信されなかった定期的なアラームは、配信されたときに1を超えるカウントを持つことがあります。 したがって、電話機がスタンバイ状態から復帰すると、1つのアラームのみが配信され、余分なアラームには不在アラームの数が含まれます。

+0

あなたの答えを受け入れ、それを編集してくださいあなたの質問 –

関連する問題