iOS:监控电池电量使用更多电池?应该自动保存吗?
Posted
技术标签:
【中文标题】iOS:监控电池电量使用更多电池?应该自动保存吗?【英文标题】:iOS: Monitoring Battery Level uses more battery? Should auto-save? 【发布时间】:2011-11-28 18:21:08 【问题描述】:我有一个 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];
所以,有几个问题:
监控电池会导致更多的电池消耗吗? 在电池没电之前为用户自动保存(核心数据)是个好主意吗?【问题讨论】:
【参考方案1】:设备已经必须监控电池通知,以便在时间/载波/信号强度可见时显示电池电量...我不希望注册通知会给任何东西增加任何额外的压力(功耗)。您的应用程序可能需要一些额外的 cpu 周期来处理通知。 :-)
自动保存可能是个好主意。
但另一个想法可能是一旦电池电量低于某个水平(或将其作为用户可设置的选项提供),就停止为您的应用提供 GPS / CoreLocation 服务。
【讨论】:
谢谢,我需要这个确认。【参考方案2】:如果在您的应用程序运行或设备“休眠”时 iDevice 死机,您的 UIApplicationDelegate 将收到一条 applicationWillTerminate: 消息。
如果应用程序被放置在后台,那么你也可以在你的 appdelegate 的 applicationWillEnterBackground 中处理保存
小心自动保存它可能会随机导致 CPU 使用率,从而导致您的用户界面在所谓的“随机”间隔内出现抖动。
【讨论】:
以上是关于iOS:监控电池电量使用更多电池?应该自动保存吗?的主要内容,如果未能解决你的问题,请参考以下文章