1

次の方法でアラームを開始しています。

protected void onHandleIntent(Intent intent) {
    Log.v("alarm", "onHandleIntent");

    int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
    long interval = AlarmManager.INTERVAL_HALF_HOUR;
    long timeToRefresh = SystemClock.elapsedRealtime() + interval;

    alarmManager.setInexactRepeating(alarmType, timeToRefresh, interval, alarmIntent);

    updateService();
}

ただし、アラームは 30 分ごとにトリガーされるのではなく、45 分ごとにのみトリガーされます。なんで?setInexactRepeating の許容範囲は 15 分ですか?

4

2 に答える 2

0

RTC_WAKEUPこれは基本的により理にかなっているため、使用する必要があります。それはnow(ウォール クロックのように、起動後ではなく、など) であり、" now+ 30 分" でウェイクアップする必要があります。

于 2012-11-20T20:33:50.257 に答える
0

ドキュメントから、「アラームの最初のトリガーは要求された時間の前ではありませんが、その時間以降はほぼ完全な間隔で発生しない可能性があります。さらに、繰り返されるアラームの全体的な期間は要求されたとおりになりますが、その間の時間はアラームが 2 回連続して発生する場合は、異なる場合があります。アプリケーションで非常に低いジッターが必要な場合は、代わりに setRepeating(int, long, long, PendingIntent) を使用してください。"

ソース:アラームマネージャー

于 2012-11-20T20:30:37.530 に答える