19

私は、理想的には位置情報サービスをバックグラウンドで実行する必要があるiOSアプリに取り組んでいます。重要な場所をテストしましたが、それは十分に正確ではありません。正確な位置は完璧ですが、これはアプリを実行可能にするために非常に多くのバッテリー寿命を消費します。

NSTimerこのバッテリーの問題を回避するために、私は内部を使用する解決策を見つけたと思いましたUIApplication:beginBackgroundTaskWithExpirationHandler:。これにより、場所がオンになり、すぐに再びオフになります。これにより、場所の更新がトリガーされ、がリセットされますbackgroundTimeRemaining

ただし、このソリューションは、ロケーションが9分ごとに1秒間だけオンになっている場合でも、多くのバッテリーを消費します(3〜4時間ごとに15%〜20%)。この1つのタイマーを除いて、アプリはバックグラウンドで何も実行していません。背景に入るときにすべてのビューを解放して、座ってバッテリーを消費していないことを確認しました。

機器の内部を確認したところ、この待機状態でアプリがCPUの0.0%と14MBのメモリを使用していることがわかりました。特に、GPSを540秒ごとに1秒間実行しても、24時間年中無休で実行する場合と比較して、バッテリー消費量を大幅に削減できないため、この時点で原因について少し戸惑っています。

問題の原因となる可能性のある次の質問の編集を開始しました。誰かが答えやアイデアを持っていることを願っています...

  • この方法でアプリを実行すると、電話が何らかの低電力モードに入るのを防ぐことができますか?

  • GPSを起動すると大量の電力が消費されますか?

  • GPSをオフにしても、GPSは一定時間動作し続けますか?

4

1 に答える 1

2

はい、WWDC 2011 セッション 312「計測器を使用した iOS パフォーマンスと電力の最適化」では、約 45 分でこれをカバーしています。

GPS の使用を終了すると、最大 10 秒間アクティブな状態を維持できます。また、アクティブなラジオはデバイスを起動し、アクティブな間はデバイスが「スリープ」するのを防ぎます。

これは、Instruments の「エネルギー診断」テンプレートを使用して確認できます。

于 2012-04-08T11:17:29.693 に答える