設備中的每個硬件都會消耗能耗毡惜,而最大的消費者就是CPU。應用計算越多旬盯,消耗的電量越多。在完成相同的操作翎猛,老一代的設備會消耗更多的電量胖翰。
CPU
計算量的消耗取決于不同的因素
* 對數(shù)據(jù)的處理(例如:對文本進行格式化)
* 待處理的數(shù)據(jù)大小—更大的顯示屏允許軟件在單個視圖中展示更多的信息,但這也意味著要處理更多的數(shù)據(jù)
* 處理數(shù)據(jù)的算法和數(shù)據(jù)結構
* 執(zhí)行更新次數(shù)切厘,尤其是在數(shù)據(jù)更新后萨咳,觸發(fā)應用的狀態(tài)或UI進行更新
推薦的做法
* 針對不同的情況選擇優(yōu)化算法
* 如果應用從服務器接收數(shù)據(jù),盡量減少需要在客戶端進行的處理
* 優(yōu)化靜態(tài)編譯處理疫稿,例如UITableview渲染一組記錄時培他,不建議一次性全部顯示或者快速滾動時立即載入記錄,而是推遲到滾動速度降到一定的閾值再顯示合理的條數(shù)
網(wǎng)絡
智能的網(wǎng)絡訪問管理可以讓應用響應得更快遗座,也助于延長電池壽命舀凛。
因此我們需要:
* 在進行任何網(wǎng)絡操作之前,先檢查合適的網(wǎng)絡是否可用
* 持續(xù)監(jiān)視網(wǎng)絡的可用性途蒋,并在連接狀態(tài)發(fā)生變化時給予適當?shù)姆答?/p>
定位
* 關閉無關緊要的特性
* 后臺定位時猛遍,每當收到更新后,都會喚醒線程和計時器
* 在其他應用程序需要更多資源時,后臺的應用可能會被關閉懊烤。
在這種情況下梯醒,需要重新初始化監(jiān)聽,可以通過application:didFinishLaunchingWithOptions:方法會收到鍵值為UIApplicationLaunchOptionsLocationKey的條目
屏幕
屏幕越大也會費電腌紧。
* 合理使用動畫
* 視頻播放
最佳實踐
* 最小化硬件使用茸习。換句話,盡可能晚地與硬件打交道壁肋,并且一旦完成任務立即結束使用
* 在進行密集型任務前号胚,檢查電池電量和充電狀態(tài)
* 在電量低時,提示用戶是否確定要執(zhí)行任務墩划,并在用戶同意后再執(zhí)行
* 或提供設置的選項,允許用戶定義電量的閾值嗡综,以便在執(zhí)行密集型操作前提示用戶