SPLIT TIMERのサポート的な問い合わせで「タイマーが微妙に遅れる」というのをたまにいただくんですが、原因を辿っていくと結構な確率で低電力モード(バッテリーセーバー)が犯人だったりします。今回はその話を短めに。
低電力モードが入ると、主にこの3つが起こります。
- バックグラウンドタブの処理がさらに強めに間引かれる
- 画面のスリープが早まる
- 通知の配信が遅れる
これは全部バッテリーを守るためにOS側が意図的にやっている制御です。
悪いことをしているわけじゃないのは分かっています。それでも、時間を正確に扱いたいツールからすると正直やめてほしい、というのが本音です(もちろんユーザーのバッテリーの方が大事なので、文句は言えません)。
タブを裏に回した状態が長く続くと、内部のカウント更新が間引かれて、通知が数秒から下手すると数十秒ずれることがあります。以前書いたバックグラウンドのズレの話とも重なる部分で、結局この手の話は根っこが同じところにたどり着くんだなと感じます。
対策としては、正確さが必要な場面だけ低電力モードを一時的に切ってもらうか、画面を表示したまま使ってもらうのが一番確実です。地味な話ですが、知っておくと「なんで遅れるの」というモヤモヤが1つ減ると思います。
画面を点けたままにする、という選択肢
Web側の対策として一応存在するのがScreen Wake Lock APIです。これを使うと、ページを開いている間だけ画面が自動でスリープしないようリクエストできます。ただしこれはあくまで「画面を消灯させない」だけの機能で、低電力モード自体を解除したりバックグラウンドの間引きを止めたりする力はありません。過信は禁物ですが、タイマーのように画面を見ながら使う道具とは相性がいい仕組みです。
