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 回答