1. 程式人生 > >IOS 應用省電指南

IOS 應用省電指南

該文是 Tuning for Performance and Responsiveness (http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Performance/Performance.html#//apple_ref/doc/uid/TP40007072-CH8-SW56)的部分閱讀筆記。

1. 首先,移動裝置的耗電大戶主要是下面幾大方面。

      The CPU.
   
      Wi-Fi, Bluetooth, and baseband (EDGE, 3G) radios  WIFI 網路連結、藍芽、基帶射頻(連線電信運營商的行動網路)

      The Core Location framework (GPS ,GPSONE等其他位置服務框架)

      The accelerometers(重力感應器?)

      The disk(磁碟訪問)

2.非網路相關的省電指南

2.1避免以輪詢的方式完成某種工作,輪詢將使CPU不能進入睡眠狀態。引起電量的長時間消耗。

2.2儘量避免關掉系統的自動休眠時鐘,這一點在之前的文章中有提到過

“.自動休眠時鐘,為了省電的原因,當IOS系統檢測到最近沒有手勢事件觸發的時候,會開始將裝置的螢幕亮度調底,如果還無手勢事件觸發,系統將徹底關閉屏 幕的電源。如果開發者開發一個IOS應用,長時間不依賴於手勢事件,例如,例如利用重力感應器的遊戲或者是視訊類應用,可能需要關閉該自動休眠時鐘,當 然,出於省電考慮,應用應當儘量儘量不使用和少用該功能。”

方法是Leave the property of the shared object set to NO

whenever possible

2.3合併工作碎片成一個比較大的任務,是CPU具有成片的空閒時間。工作碎片太多,會導致CPU頻頻被喚醒,並切換工作狀態去執行細碎的工作任務,不利於省電。例如,在系統設計中,聯絡人使用者資料可以一條條讀入(符合自然的思維習慣),也可以一批讀入集中處理,應當儘量使用批量處理邏輯。

2.4避免頻繁讀寫磁碟(儲存),例如一個讀寫磁碟操作,由大量小更改操作組成,可以優化合併成一次磁碟讀寫操作,更新所有的資料。

2.5避免盲目追求更快的螢幕繪製重新整理速度,螢幕繪製是非常耗電的操作,避免盲目追求高速的幀重新整理頻率。

2.6減少裝置上的事件傳輸。IOS上存在著三種事件,第一類是觸控式螢幕事件,第二類是移動裝置產生的事件(Motion Event),例如搖動裝置產生的事件,持續的長時間獲取裝置的位置或者陀螺儀事件等,第三類事件是遠端控制事件,由耳機等外部裝置產生的對應用的控制事件,例如,播放音樂時候應用會收到暫停或者快進等事件。基於節電的考慮,請應用禁止事件的傳送或者降低事件的傳送頻率。例如,如果應用使用 接收事件,可以設定接收 加速事件(acceleration events)的頻率。

3.網路相關的省電指南

3.1儘量減少非必要的網路連線操作,不要對網路中的伺服器進行輪詢。

3.2非連線網路不可的時候,只傳輸最少量的資料,使用壓縮格式,並清除將被忽略的無意義資料。

3.3優先採用批量傳輸打包資料,儘量不要週期性傳送少量的資料。當系統發現網路處在非活動狀態時候,會發送命令使WIFI或者蜂窩無線基帶模組進入休眠狀態,從而達到省電的目的。

3.4能夠使用WIFI的時候優先使用WIFI網路,文章說WIFI連線相對蜂窩無線網路連線更加省電(為何?)

3.5儘量節省使用核心位置框架( Core Location framework)來獲取裝置位置更新。因為核心位置框架需要使用各種網路連線,例如WIFI, 蜂窩無線電、GPS等來獲取裝置的位置更新,這些模組都是耗電的大戶。