iOS性能优化篇 —— 耗电优化总结
手機App耗電的主要來源有以下四個因素:
- CPU處理,Processing
- 網絡,Networking
- 定位,Location
- 圖像,Graphics
耗電優化最終目的:通過盡可能降低CPU、GPU功耗來降低手機電量消耗。
- 盡可能少用定時器;
- 優化I/O操作(所謂的I/O操作也就是文件操作,我們簡稱為I/O操作。怎么優化呢?盡量不要頻繁寫入小數據,最好批量一次性寫入。讀寫大量主要的數據時,考慮用dispatch_io,其提供了基于GCD的異步操作文件I/O的API。用dispatch_io系統會優化磁盤訪問);
- 數據量比較大的,建議使用數據庫(SQlite、CoreData);
網絡方面優化
-
減少、壓縮網絡數據。(不同格式數據提交關系:XML提交比較大;JSON 提交比較小,protobuf提交最小)
-
如果多次請求的結果相同,盡量使用緩存。NSMutableRequest 里面可以設置使用NSCache進行緩存;
-
盡量使用斷點續傳,否則網絡不穩定的時候可能多次傳輸相同的內容。(傳輸1M文件,如果一次性下載,一旦網絡問題下載失敗,下次重新請求,會從頭開始。之前下載過的部分會進行重新下載,斷點續傳可以保證之前下載的數據緩存起來);
-
網絡不可用,不要嘗試執行網絡請求;
-
讓用戶可以取消長時間運行或者速度很慢的網絡操作,設置合適的超時時間;
-
批量傳輸,比如下載視頻流時,不要傳輸很小的數據包,直接下載整個文件或者一大塊一大塊地下載。如果下載廣告,一次性多下載一些,然后再慢慢展示。如果下載電子郵件,一次下載多封,不要一封一封地下載。
定位優化
-
如果只是需要快速確定用戶的位置,最好用CLLocationManager的requestLocation方法。定位完成后,會自動讓定位硬件斷電;
-
如果不是導航的應用,盡量不要實時更新位置,定位完畢就關掉定位服務;
-
盡量降低定位精度,比如盡量不要使用精度最高的KCLLocationAccuracyBest;精度越高,硬件模塊功耗越大;
-
需要后臺定位時,盡量設置pauseLocationUpdatesAutomatically為YES,如果用戶不太可能移動的時候系統會自動暫停位置更新。
-
盡量不要使用startMonitoringSignificantLocationChanges,優先考慮startMonitoringForRegion:
硬件檢測優化
- 用戶移動、搖晃、傾斜設備時,會產生動作(motion)事件,這些事件由加速度計、陀螺儀、磁力計等硬件檢測。在不需要檢測的場合,應該及時關閉這些硬件。
轉載于:https://www.cnblogs.com/iOS-mt/p/10484820.html
總結
以上是生活随笔為你收集整理的iOS性能优化篇 —— 耗电优化总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【传智播客】Libevent学习笔记(三
- 下一篇: Artistic Style Dev C