3

すでにかなりの量のバッテリーを使用しているGPSアプリがあります。アプリの性質上、ユーザーが知らないうちにバッテリーが切れた場合に、ユーザーがすべてのデータを失うことは望ましくありません。そこで、バッテリーを監視し、バッテリーが非常に少ない場合はGPSデータを保存して停止することにしました。私は使うだろう:

[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(batteryStateDidChange:)
                                             name:UIDeviceBatteryStateDidChangeNotification
                                           object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(batteryLevelDidChange:)
                                             name:UIDeviceBatteryLevelDidChangeNotification
                                           object:nil];

だから、いくつかの質問:

  • バッテリーを監視すると、さらに多くのバッテリーが消耗しますか?
  • バッテリーがなくなる直前にユーザーの自動保存(コアデータ)を行うのは良い考えですか?
4

2 に答える 2

4

時間/キャリア/信号強度が表示されているときにバッテリーレベルを表示するために、デバイスはすでにバッテリー通知を監視する必要があります...通知に登録すると、何かに追加のストレス(消費電力)が追加されるとは思いません。通知を処理するために、アプリから数回の追加のCPUサイクルが発生する可能性があります。:-)

自動保存は賢い考えかもしれません。

ただし、別のアイデアとして、バッテリーが特定のレベルを下回ったら、アプリのGPS / CoreLocationサービスを停止する(またはユーザーが設定可能なオプションとして提供する)こともできます。

于 2011-11-28T18:36:06.413 に答える
0

アプリケーションの実行中またはデバイスが「スリープ」しているときにiDeviceが停止すると、UIApplicationDelegateにapplicationWillTerminate:メッセージが送信されます。

アプリケーションがバックグラウンドに配置されている場合は、appdelegateのapplicationWillEnterBackgroundでも保存を処理できます。

自動保存に注意してください。CPU使用率がランダムに発生し、ユーザーインターフェイスが「ランダム」な間隔でぎくしゃくする可能性があります。

于 2011-11-30T22:34:35.427 に答える