Android勢がiOSに憧れるただ一つの理由、それはリアルタイムに通知を受信すること。
Androidの通知が遅れる原因は、Dozeと呼ばれる省電力機能によって、使っていないとき*1にバックグラウンド処理が制限されるためです。
というわけで、せっかくなので今回はPCを使わずに、Dozeを無効化する方法をご紹介します。
デメリットは、若干電池持ちが犠牲になることと、再起動のたびに無効化を実行する必要があることですね。
2026/1/31追記
Shizukuを使用して、もうちょい便利にした手順を公開しましたので、こちらをご覧ください。
【非root】Dozeを端末のみで無効化する【Shizuku編】
下記の手順は、分かる人向けに超ざっくり説明すると、
Termuxのadbを使ってdoze無効化コマンドを叩くだけです。(adbはワイヤレスデバッグで接続します)
目次
用意するもの
- 端末
- Termux(adbを使うので)
- Wi-Fi接続(ワイヤレスデバッグを使うので)
準備編
開発者向けオプションが有効になっていない場合は、有効にしてください。
Termuxとadb導入
F-Droidから、Termuxのapkをダウンロード・インストールします。
※Google Play版は古いため非推奨
Termuxを起動したら、パッケージをアップデートします。Ubuntuで言うところのaptみたいなもんですね。
pkg update pkg upgrade
Termuxにadbを導入します。
pkg install android-tools
adbのペアリング(初回のみ)
開発者オプション→ワイヤレスデバッグを開きます。
このとき、分割画面かフローティングウィンドウでTermuxを同時に開きます。
(ワイヤレスデバッグの設定画面が開いていないとペアリングできないため)

「ペア設定コードによるデバイスのペア設定」を選択すると、6桁のペアリングコードが出現します。
Termux側で、
adb pair localhost:ポート番号
を入力すると、Enter paring code:と聞かれるので、表示されているペア設定コードを入力。

ペアリングが成功すれば、Successfully pairedの表示とともに、ペア設定済みのデバイスに出現するはず。
実行編
adb接続
ペアリングできたら、IPアドレスとポートに表示されているポート番号を使用して接続します。
adb connect localhost:ポート番号

接続後、adb devicesを実行してみてデバイスが表示されたらOK。
Doze無効化コマンド
adbでデバイスを認識している状態で、
adb shell dumpsys deviceidle disable
を実行します。
Deep idle mode disabled Light idle mode disabled
の表示が出ればDoze無効化完了です。(既に無効化されていると何も出ません)
あとがき
次回以降はadbの接続を確認し、無効化コマンドを実行すればOK。
ちなみにTermuxでは↑ボタンで以前に実行したコマンドを遡れますが、シェルスクリプト化する等で実行しやすくすることをおすすめします。
では、快適なAndroidライフを。
*1:私の解釈ですが、充電されていないとき・画面がついていないとき・加速度センサー的に動きがないときに徐々にバックグラウンド処理の間隔が開いていく感じです