監視時のサボりって、いったい何?
Ver.1.7.0以降から、監視時のサボりを防止する機能を追加しています。
最近、この機能によって逆に「常に監視」が勝手に無効になるケースがみられます。そもそも監視時のサボりっていったい何か?どの様な場合に有効なのかを説明したいと思います。
「常に監視」が勝手に無効になるケースは、電源設定が原因のケースが考えられます。そのTipsについては、「常に監視と電源について」に説明を記載していますので、ご確認ください。
サボりの実態(Dozeモード)
Android 6で「Dozeモード」という省電力機能が導入されて以来、OSはバージョンアップを重ねるごとに、バッテリー消費量を抑えることが出来るよう様々な工夫を追加しています。OSは、ユーザには極力迷惑をかけずに上手く仕事をサボる技(バッテリー消費量を抑える技)をどんどん強化しています。
これが私を含め多くのアプリ開発者の頭を悩ませています。
「Doze」とは聞きなれない英単語かもしれませんが、「うたた寝する」や「居眠りする」という意味です。
例えば、睡眠中や仕事中などで、ユーザはしばらくの間スマホを触っていないなとOSが判断すると、DozeモードというOSのうたた寝状態となり、アプリの処理を一時的に止めてしまったり、通知することをサボってしまいます。朝起きてスマホを開いたら、とたんにメールやSNSなどの通知がたくさん鳴るようなことはありませんか?
本アプリの場合、Dozeモードになってしまうと、せっかく常に監視と通知を有効にしておいても、回線エリアが切り替わった場合に通知されなくなってしまいます。
スマホを2台持ちにして、テザリングなどで常にカバンの中に入れっぱなしといった方には、通知が遅れたり来なかったりした場合は、大変困ったことになるわけです。
監視時のサボりを防止する
数多くのアプリ開発者によって、OSがサボる(Dozeモードになる)のを防止する手法が検討されています。私はその手法の1つであるアラーム機能を活用した手法を採用しています。
本アプリの「監視時のサボりを防止する」のチェックをオンにしている場合、数秒先の時間にアラームをセットして、その時間になるとアラームを鳴らさずストップして、またその数秒先にアラームをセットしなおすということを繰り返します。OSはアラームにセットされた時間に近づくと、Dozeモードへは移行しない、さらに例えDozeしていたとしてもDozeから目覚め、アラームを鳴らすためにスタンバイします。この特徴を使ってDozeモードに移行することを防止しています。
もちろん、本アプリで設定するアラームは、ユーザが目覚まし時計などで設定するアラームとは別のものとなりますので、目覚まし時計に悪影響を及ぼすことは無いためご安心ください。
サボり防止機能はお勧めしない
本アプリの「監視時のサボりを防止する」機能によって、本アプリの「常に監視」が勝手に無効になるケースが報告されています。本来、Dozeした場合は通知が停止するため、回線が切り替わった際に通知が遅れることがあっても、常に監視が無効になることは無いと考えています。
スマホ機種やOSのバージョン等により違いはありますが、本アプリのサボり防止機能によって、OSが消費電力の無駄遣いを検知して、勝手に本アプリのサービスを停止してしまうようです。(賢いのか、お節介なのか分かりませんが)
スマホ画面を切った状態で長らく放っておくと、OSがサボって通知してくれなくなりますが、普段使っている時にちゃんと通知してくれるので、私としては、「監視時のサボりを防止する」機能はオフにしておくことをお勧めします。