為さねば成らぬ

retia.verno@gmail.com

WorkManagerの定期実行は思ったより定期実行ではない

WorkManagerでは2種類のWorkRequestが作成できる。

ひとつはOneTimeWorkRequest。 1度だけ実行されるので通常はこちらを使う。

もうひとつはPeriodicWorkRequest。 キャンセルするまで複数回実行される、とある。

ただ、注意するべきは実行時間を指定できないこと。

with the first execution happening immediately or as soon as the given Constraints are met. The next execution will happen during the period interval

初回はすぐに実行され、そこから指定したintervalごとに実行される。 さらにOSのバッテリー最適化のためにこのintervalもずれていく。 時間指定したいのであればOneTimeRequest使えとのこと。

弊アプリでは毎日特定の時間に通知を出すために利用したかったが、上記の理由でOneTimeRequestにしました。