Android
ドーズモード
サーチ…
備考
Doze Modeは、アイドル時に携帯電話をスリープ状態にする一連の変更とルールです。
Android 6.0では、Marshmallow:Dozeモードは、画面がオフになってからしばらくするとアクティブになり、デバイスは停止しており、バッテリーで動作しています。 上記の図でわかるように、Dozeモードが有効になると、デバイスにはウォークロック、ネットワークアクセス、ジョブ/同期、アラーム、GPS / Wi-Fiスキャンは発生しません。
Android 7.0のNougat:あなたの携帯電話がポケットに入っている(画面がオフで、バッテリーで動作していますが、静止していない)場合は、ドーズモードの機能も利用できますか?だから、GoogleがExtended Doze Modeを発表した理由は、画面が消灯しても静止していないときに実行されるモードだ。 この図でわかるように、ネットワークアクセスとジョブ/同期だけが無効になっています。 Extended Dozeは、最初のDozeモードに取って代わるものではありません。彼らは電話の状態(固定かどうか)によって、一緒に働きます。ここには違いがあります: 開発者は次の点に注意する必要があります。
- Dozeは、優先度の高いGCM(Google Cloud Messaging)メッセージ(ユーザーが即時通知を必要とする場合)の一時的なワockロックとネットワークアクセスを維持する可能性があります。
- フォアグラウンドサービス(音楽再生など)は引き続き機能します。
詳細については、 https : //developer.android.com/training/monitoring-device-state/doze-standby.htmlを参照してください。
ドーズモードを使用しないようにアプリを除外する
- 電話の設定を開く
- オープンバッテリ
- メニューを開き、「バッテリー最適化」を選択します。
- プルダウンメニューから[すべてのアプリ]を選択します
- ホワイトリストに追加するアプリを選択する
- 「最適化しない」を選択する
今、このアプリは最適化されていないアプリの下に表示されます。
アプリはisIgnoringBatteryOptimizations()
呼び出すことでホワイトリストに登録されているかどうかを確認できます。
プログラムによるAndroidアプリケーションのホワイトリスト登録
ホワイトリストに登録すると、アプリケーションのドーズモードが無効になることはありませんが、ネットワークとホールドウェイクロックを使用して行うことができます。
Androidアプリケーションをプログラムでホワイトリスト登録するには、次のようにします。
boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());
if(!isIgnoringBatteryOptimizations){
Intent intent = new Intent();
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, MY_IGNORE_OPTIMIZATION_REQUEST);
}
上記のアクティビティを開始した結果は、次のコードで確認できます。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_IGNORE_OPTIMIZATION_REQUEST) {
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());
if(isIgnoringBatteryOptimizations){
// Ignoring battery optimization
}else{
// Not ignoring battery optimization
}
}
}