iOS:监控电池电量使用更多电池?应该自动保存?

时间:2011-11-28 18:21:09

标签: iphone ios cocoa-touch core-data uidevice

我有一个已经使用了相当数量电池的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];

所以,有几个问题:

  • 监控电池是否会导致更多电量耗尽?
  • 在电池耗尽之前为用户自动保存(核心数据)是个好主意吗?

2 个答案:

答案 0 :(得分:4)

设备已经必须监控电池通知,以便在时间/载波/信号强度可见时显示电池电量......我不希望注册通知会增加任何额外压力(功耗) )。也许你的应用程序有一些额外的cpu周期来处理通知。 : - )

自动保存可能是个明智之举。

但另一个想法可能是,一旦电池电量低于某个水平(或提供用户可设置选项),就停止为您的应用提供GPS / CoreLocation服务。

答案 1 :(得分:0)

如果iDevice在您的应用程序运行时或在设备“休眠”时死亡,您的UIApplicationDelegate将发送applicationWillTerminate:message。

如果应用程序放在后台,那么您可以在appdelegate的applicationWillEnterBackground中处理保存

小心自动保存它会随机导致CPU使用率导致用户界面以所谓的“随机”间隔生涩。