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:监控电池电量使用更多电池?应该自动保存吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 的后台监控电池电量?

Android 通过清单访问电池统计信息或监控电池电量

在android中自动更新电池电量

iOS:如何正确获得电池电量

iphonexr如何显示电池电量百分比

iOS 上的标准定位服务电池消耗