以下のパラメーターは何ですか?
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_FIFTEEN_MINUTES, alarmIntent);
そして次の:
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, alarmIntent);
違いは何ですか?また、機能の面で2つの違いは何ですか?
どちらの例も、指定されたalarmIntent
を送信する繰り返しアラームをスケジュールします。どちらの場合も、最初に送信されるのは即時です(calendar.getTimeInMillis()
は 現在の時刻 を返します)。どちらの場合も、アラームを送信する必要があるときにデバイスが起動されます(AlarmManager.RTC_WAKEUP
)。
これらの呼び出しには2つの違いがあります。簡単な方法は、最初の呼び出しでは15分ごとに、2番目の呼び出しでは毎日(3番目のパラメーターでわかるように)意図が送信されることです。より複雑な違いは、関数呼び出し自体です。setRepeating
は、15分ごとにexactlyの最初のアラームをスケジュールします。 setInexactRepeating
は、24時間ごとにおよその2番目のアラームをスケジュールします。これは、その間隔から逸脱する可能性があることを意味します。 。
これはAPI 19で変更されていることに注意してください。これらの2つの呼び出しは同義です。 このガイド 、および このAPIドキュメント を参照してください。
アラームの精度を決定します
アラームの種類を選択することは、多くの場合、アラームを作成する最初のステップです。さらに区別できるのは、アラームをどの程度正確にする必要があるかです。
ほとんどのアプリでは、setInexactRepeating()
が正しい選択です。この方法を使用すると、Androidは複数の不正確な繰り返しアラームを同期し、それらを同時に起動します。これにより、バッテリーの消耗が減少します。
例として厳格な時間要件を持つまれなアプリの場合、アラームは午後4時に正確に起動する必要があります。毎日setRepeating()
を使用します。
参照: アラームの精度を決定します
以前の回答を補強するために、繰り返しアラーム、特にsetInexactRepeating()
を使用して要求される不正確なアラームを使用する際に考慮すべきその他のベストプラクティスがいくつかあります。
アラームタイプ
タイムベース
dumpsys alarm
を介してadb Shell
を使用して、アプリがスケジュールしたアラームを確認できます。間隔
編集:Gingerbreadおよびハニカム3.0デバイスに関連するバグの詳細な説明: https://code.google.com/p/Android/issues/detail?id=3155
setRepeatingの方が正確およびsetInexactRepeatingはバッテリーを節約するが正確ではない.