我有一个已经使用了相当数量电池的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];
所以,有几个问题:
答案 0 :(得分:4)
设备已经必须监控电池通知,以便在时间/载波/信号强度可见时显示电池电量......我不希望注册通知会增加任何额外压力(功耗) )。也许你的应用程序有一些额外的cpu周期来处理通知。 : - )
自动保存可能是个明智之举。
但另一个想法可能是,一旦电池电量低于某个水平(或提供用户可设置选项),就停止为您的应用提供GPS / CoreLocation服务。
答案 1 :(得分:0)
如果iDevice在您的应用程序运行时或在设备“休眠”时死亡,您的UIApplicationDelegate将发送applicationWillTerminate:message。
如果应用程序放在后台,那么您可以在appdelegate的applicationWillEnterBackground中处理保存
小心自动保存它会随机导致CPU使用率导致用户界面以所谓的“随机”间隔生涩。