2011-11-28 132 views
3

我有一个GPS应用程序已经使用了相当数量的电池。由于应用程序的性质,我不希望用户在他们的电池不知情的情况下死亡时丢失所有数据。所以,我想我会监视电池,然后保存并停止GPS数据,如果电池电量很低。我会用:iOS:监控电池电量使用更多电池?应该自动保存?

[[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

的装置已经有监视以便显示电池水平时的时间/载体/信号强度是可见的电池通知...我不希望注册该通知会增加任何额外的压力,以任何东西(功耗)。也许你的应用程序需要一些额外的CPU周期来处理通知。 :-)

自动保存可能是一个聪明的主意。

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

+0

谢谢,我需要这个确认。 –

0

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

如果应用程序置于后台,那么你可以处理保存有作为你的appdelegate的applicationWillEnterBackground

要小心自动储存它可以随机导致CPU使用率造成你的用户界面是干在所谓的“随机“间隔。