2011-11-28 165 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使用率造成你的用戶界面是幹在所謂的「隨機「間隔。