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