これに使用AlarmManager.setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
します。タイプをAlarmManager.RTC_WAKEUP
に設定して、デバイスがスリープ状態の場合に確実にウェイクアップするようにします (それが要件である場合)。
このようなもの:
Intent intent = new Intent("com.foo.android.MY_TIMER");
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
long now = System.currentTimeMillis();
long interval = 60 * 60 * 1000; // 1 hour
manager.setRepeating(AlarmManager.RTC_WAKEUP, now + interval, interval,
pendingIntent); // Schedule timer for one hour from now and every hour after that
このメソッドに PendingIntent を渡します。インテントの漏洩を心配する必要はありません。
AlarmManager.cancel()
アラームが不要になったら、忘れずに電話してアラームをオフにしてください。
このためのコードでレシーバーを登録しないでください。<intent-filter>
次のように、BroadcastReceiver のマニフェスト エントリにタグを追加するだけです。
<receiver android:name=".MyReceiver">
<intent-filter>
<action
android:name="com.foo.android.MY_TIMER"/>
</intent-filter>
</receiver>