8

居眠りモードのときに Android アプリで位置情報の更新を取得しようとしていますが、これは Android 5.x まで機能していました。Android 6 と居眠りの出現により、私が何をしても、ある時点で更新が停止します。このトピックに関するいくつかの記事とstackoverflowの回答を読んだ後、次の変更を加えました。

  • サービスをフォアグラウンド サービスにしました
  • サービスが部分的な wake lock を保持するようにしました
  • アプリに WAKE_LOCK パーミッションを付与しました
  • サービスを別のプロセスで実行しました(一部のAndroidバグの回避策のため)
  • アプリのバッテリー最適化を無効にしました

しかし、それでも、doze が開始されたときに位置情報が更新されません。doze が開始されたときにサービス スレッドが実行され続けることを確認しました (定期的にメッセージをログに記録することによって) が、どういうわけか、位置情報マネージャーが更新の送信を停止します。この点に関して、居眠りと LocationManager に関するドキュメントはかなり乏しいので、誰かが居眠りで場所マネージャーを生かしておく方法を知っているかどうか疑問に思っていましたか? 定期的に呼び出された場合に LocationManager をアクティブに保つメソッドが LocationManager にありますか? 1 秒に 1 回、更新頻度の高い GPS 更新のみに関心があることに注意してください。

4

3 に答える 3