AlarmManager 2 定期的な間隔で繰り返し処理をするプログラム
先日のエントリーで、AlarmManager#setを使った処理を記述しました。 setは、何月何日何時何分に処理をするといった時に使用します。毎日0時1秒に処理をしたいのであれば、BroadcastReceiverで再度setにて指定する必要があります。 上記のような処理ではなく、一定の間隔で処理を行いたい時は、setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)を使用します。 このメソッドでは、繰り返しブロードキャストレシーバーにメッセージを送る事ができ、AlarmManager#cancelされるまで永遠に繰り返します。( RSSReader や ポッドキャストプログラム でFeedを取得する時などに使用しています)。 13分間隔でBroadcastReciverを呼び出すプログラム(送り側) Intent intent = new Intent(ctx, ReceiverIconChange.class); intent.setAction(CALENDER_ICON_CHANGE); PendingIntent sender = PendingIntent.getBroadcast(ctx, 0, intent, 0) AlarmManager am = (AlarmManager)(ctx.getSystemService(ALARM_SERVICE)); long interval = 13 * 1000 * 60; long firstTime = SystemClock.elapsedRealtime(); am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,firstTime, interval, mFeedService); 上記コードでは、初回に起動される時間を現在としています。 受け取り側のレシーバーは、昨日のAlarmManager1の記事とほぼ同じですが、アラームを再設定する必要がない所が異なります。 Service受取側 public class ReceiverIconChange extends BroadcastReceiver { public v...