9

イベントを 1 時間ごと (5:00、6:00、7:00 など) に発生させたいと考えています。スレッドを使用して永続的なバックグラウンド サービスを試してみましたが、次の理由により適切な解決策ではありませんでした。

  • バッテリー消費
  • Androidのメモリ管理によるサービス終了

だから私はAlarmManagerで試しています。アラームを X 秒で起動するように設定すると機能します (「set」メソッドを使用)。しかし、アラームがキャンセルされるまで、毎正時に (「setRepeating」メソッドを使用して) イベントを繰り返すにはどうすればよいでしょうか?

ありがとう!

4

1 に答える 1

16

アラームを設定すると、最初のトリガー時間と次のトリガー間隔の 2 つの時間があります。

次に、次の時間の先頭までの残りのミリ秒を計算し、繰り返し間隔を 1 時間に設定する必要があります。

// We want the alarm to go off 30 seconds from now.
long firstTime = SystemClock.elapsedRealtime();
firstTime += remainingMilisecondsToTopHour;
long a=c.getTimeInMillis();

// Schedule the alarm!
AlarmManager am = (AlarmManager)ctx.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME,
c.getTimeInMillis(), 1*60*60*1000, sender);
于 2010-06-27T13:09:39.003 に答える