私は、理想的には位置情報サービスをバックグラウンドで実行する必要があるiOSアプリに取り組んでいます。重要な場所をテストしましたが、それは十分に正確ではありません。正確な位置は完璧ですが、これはアプリを実行可能にするために非常に多くのバッテリー寿命を消費します。
NSTimer
このバッテリーの問題を回避するために、私は内部を使用する解決策を見つけたと思いましたUIApplication:beginBackgroundTaskWithExpirationHandler:
。これにより、場所がオンになり、すぐに再びオフになります。これにより、場所の更新がトリガーされ、がリセットされますbackgroundTimeRemaining
。
ただし、このソリューションは、ロケーションが9分ごとに1秒間だけオンになっている場合でも、多くのバッテリーを消費します(3〜4時間ごとに15%〜20%)。この1つのタイマーを除いて、アプリはバックグラウンドで何も実行していません。背景に入るときにすべてのビューを解放して、座ってバッテリーを消費していないことを確認しました。
機器の内部を確認したところ、この待機状態でアプリがCPUの0.0%と14MBのメモリを使用していることがわかりました。特に、GPSを540秒ごとに1秒間実行しても、24時間年中無休で実行する場合と比較して、バッテリー消費量を大幅に削減できないため、この時点で原因について少し戸惑っています。
問題の原因となる可能性のある次の質問の編集を開始しました。誰かが答えやアイデアを持っていることを願っています...
この方法でアプリを実行すると、電話が何らかの低電力モードに入るのを防ぐことができますか?
GPSを起動すると大量の電力が消費されますか?
GPSをオフにしても、GPSは一定時間動作し続けますか?