AndroidのスリープにおけるDoze機能の問題

2024年1月7日

Androidにはバージョン6以降、Dozeという機能が搭載されています。Dozeは一定時間無操作だったり電源ボタンを押してスクリーンオフになる一般的にスリープと呼ばれる状態で、電話やSMSのような重要度の高いアプリを除き、ネットワークへのアクセスを停止するといったアプリへの動作制限を行います。Dozeには浅いDozeと深いDozeがあるようで、スリープに入り一定時間経過後の深いDozeではアプリへの制限がより強くなるようです。

Dozeはスマホのバッテリーの電力消費を抑える為の機能なのですが、この機能により本来スマホがスリープになっている状態でも常に動作すべきメールアプリなどの通知が大きく遅延したり全く通知が行われない問題が発生します。しかもDozeはユーザが設定から無効にするといった事も出来ません。一応、特定のアプリを電池の最適化から除外する事でスリープ中もそのアプリを動作させる事は出来ますが、スリープが長く続いた場合などではDozeにより動作が制限される事がある模様。Dozeの詳しい仕様はAndroid オープンソース プロジェクトに掲載されています。

電池の最適化からの除外

スマホをスクリーンオフにしてスリープになった状態でもメールの着信などの通知を安定して受け取るには、そのアプリを「電池の最適化」から「最適化しない」にして除外する必要があります。方法はAndroid 6/7/8の場合、「設定」-「電池」と進み画面右上にあるメニューから「電池の最適化」を表示して更に進みます。「電池の最適化」画面で「すべてのアプリ」に切り替えて最適化から除外するアプリをタップ。表示されたポップアップ画面で「最適化しない」を選択して完了。

Android 6/7/8 電池の最適化設定
Android 6/7/8 電池
Android 6/7/8 最適化しない

Android 9/10の場合は「設定」-「アプリと通知」と進み下部にある「詳細設定」を開いて「特別なアプリ アクセス」と更に進みます。メニュー内にある「電池の最適化」をタップして、アプリ一覧を開き上部メニューの「最適化してないアプリ」から「すべてのアプリ」に変更。該当のアプリをタップして「最適化しない」に変更して完了。

Android 9/10 電池の最適化設定
Android 9/10 電池の最適化
Android 9/10 最適化しない

自動調整バッテリーのオフ

Android 9以降から搭載された「自動調整バッテリー」機能もバッテリーの電力消費を節約する為の機能ですが、Dozeと同様にこの機能もメールアプリなどのプッシュ通知を遅らせたり通知されない原因となる事があります。また機種によっては逆にこの機能がバッテリーの電力消費において逆効果になる事もあるようです。

Android設定 電池
Android設定 自動調整バッテリー
自動調整バッテリーのオフ

「自動調整バッテリー」をオフにする方法はAndroidの「設定」で「電池」-「自動調整バッテリー」と進んで「自動調整バッテリーの使用」をタップする事で有効と無効を切り替える事が出来ます。

通知の遅延や通知されない問題

電池の最適化からの除外や自動調整バッテリーをオフにしても残念ながらアプリによってはスリープ状態からの通知の遅延や通知が行われない問題があります。これらの問題はAndroidスマホをWindows/Mac/Linux PCと接続してAndroid SDK Platform-Toolsに含まれるadbを使い一時的にDozeを無効化すれば解決出来る事がありますが、そもそもスマホを再起動すると元に戻るので完全に無効化する事は出来ません。

つまり特殊な方法を用いない限りは根本的にDozeの問題を解決するのは難しいようです。しかしDozeが関わる通知の問題では、それを解決しようという特殊なアプリも幾つかあり、その一つであるDoze Busterで解決出来る可能性があります。