Android で cron - Alarm Manager

PendingIntentとかServiceとか、そのあたりなのは読んだり、動かしたりして知ってはいたが、
まとめておく。

AlarmManager | Android Developers 

app - API Demos | Android Developers 

Taosoftware: AlarmManager1 Android でCronみたいなことをするには 

AlarmManagerの使用 - すにぺっと 

開始

以下の流れで実装する。

  1. 実行処理クラスのインテント作成
  2. それをペンディング
  3. アラームにセット
Intent intent = new Intent(this, ReceiveActivity.class);
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);
long firstTime = SystemClock.elapsedRealtime() + 5 * 1000;
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                firstTime, 20 * 1000, sender);

終了

開始と同じように、インテント作成してから、ペンディングして、アラームをキャンセルする。

Intent intent = new Intent(this, ReceivActivity.class);
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.cancel(sender);

実行する処理

別クラスとして実装。

public class ReceiveActivity extends BroadcastReceiver {
    @Override
    public void onReceive(Context centext, Intent intent) {
      doSomething();
    }
}

AndroidManifest.xml

<receiver android:name=".ReceiveActivity" android:process=":remote" />