« Android Rebootするアプリケーション | メイン | Android AlarmManager 3 サービスでの受け取り »

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 void onReceive(Context ctx, Intent intent) {
       
       String action = intent.getAction();
       if (!CALENDER_ICON_CHANGE.equals(action)) {
        	// アイコン変更の要求でなかったら、終了
    	   return;
        }

   doSomething();
}

繰り返し処理をするといっても、ゲームとか、時計の秒針をきちんと実装するとかシビアな物には使えません。1秒程度ずれても問題ないような時に使用するのが良いでしょう。

ブログ内の関連する記事

トラックバック

このエントリーのトラックバックURL:
http://www.taosoftware.co.jp/mt/mt-tb.cgi/143

この一覧は、次のエントリーを参照しています: AlarmManager 2 定期的な間隔で繰り返し処理をするプログラム:

» Android AlarmManager 5 システムブロードキャスト from Taosoftware
AndroidのAlarmManagerの最後の記事 AlarmManager... [詳しくはこちら]