Geeの投稿のDianne Hackbornからのコメントが「文書化」されている場合、明らかに半文書化された動作です:https://plus.google.com/+AndroidDevelopers/posts/94jCkmG4jff通知アイコンドーズモード中にウェイクロックを維持することが許可されるべきである。DozeモードのフォアグラウンドサービスでWake Lockを無効にする - Android Mの新しいバッテリ最適化M
フォアグラウンドサービスに加えてトップアクティビティがある場合、これは有効ではないようです。
は私が実証最小限の実装を作成する必要があり、この: https://github.com/petrnalevka/dozetest/blob/master/src/com/urbandroid/doze/DozeService.java
問題がAndroidのM上で再現することができ
、MRA58Kネクサス5とMRA58Nネクサス6
マイフォアグラウンドサービス関連する通知があり、私は部分的な起床ロックを保持します。残念ながらDozeモードが引き継がれ、起床ロックが壊れています。私は、バッテリーの最適化からのオプトアウト、またはトップアクティビティから離れることでこれを防ぐことができました。
フォアグラウンドサービスがウェイクロックを維持する理由はないが、トップにアクティビティがある場合はないため、これはAndroidのバグだと思う。
私は、これは明らかにのみ、現時点でREQUEST_REMOVAL_FROM_PLAYSTORE_BY_GOOGLEを意味REQUEST_IGNORE_BATTERY_OPTIMIZATIONSを必要としないためにcrutial機能であるとしても、私はすでにここhttps://code.google.com/p/android/issues/detail?id=193802の回避策を見つけるためにAndrodiの課題追跡にこれを報告しているSO上でこの問題を入れています。ここで
は、私は+ダイアンHackbornからヒントにADB感謝を使用して問題を再現することができた方法です:
また、私のアプリを実行しているフォアグラウンドサービスを持ちながら、私はフォアグラウンドでの活動を維持する際に認識されているようです私は家に押し、私は状態に入る活動ままにしておくと
PARTIAL_WAKE_LOCK 'Doze lock' DISABLED (uid=10112, pid=24649, ws=null)
ProC# 0: fore F/A/TS trm: 0 24649:com.urbandroid.doze/u0a112 (top-activity)
:パワーマネージャによってとして
PARTIAL_WAKE_LOCK 'Doze lock' (uid=10112, pid=24649, ws=null)
ProC# 4: prcp F/S/SF trm: 0 24649:com.urbandroid.doze/u0a112 (fg-service)
サービスが稼動しているため、画面がいつオフになったかを監視するために監視できるブロードキャストがある'startActivity()'を使ってホーム画面を表示することができます(つまり、自分自身をバックグラウンドに移動させることができます)。 'ACTION_SCREEN_OFF'が聞くべき正しい放送であるかどうかわかりません。 – CommonsWare
私は同様の方向性を考えていました。ホーム画面は標準的な意図を持った良い候補です。これをテストして報告します。 –
ホームスクリーンonScreenOffのインテントを呼び出して、私のアクティビティをonScreenOnに戻したいと考えました。また、adbテストに基づいて正常に動作しているようです。驚いたことに、Nexus 5ではあまりにも奇妙に見えません。ランチャーは、画面をオンにするとすぐに点滅します。私は今実際のドーズモードテストを行うでしょう。数時間を要します。私は実際にこれが十分に信頼できるかどうかについては怒っています。 –