應用前臺省電祕籍——這些常見功耗雷坑不要再跳了

使用應用時,有時會出現掉電快、卡頓、過分發熱等問題,影響用戶體驗的同時,也嚴重影響了應用使用時長和用戶留存,如何解決上述問題?本文華爲顯示流程功耗優化專家王文華將分享議題——低功耗前臺顯示。android

手機器件包括SOC、TP、Modem、GPS、Audio、Camer等主要器件,這些器件在使用時對功耗的影響比較大。緩存

image

上圖展現的是不一樣器件對手機功耗帶來的影響,下文將經過從主流應用中發現的問題實例,對應用功耗產生影響的設計因素展開介紹。網絡

視圖設計

image

許多應用存在無效刷新、多元素同時刷新等問題,致使數據運算量增長,出現過分佔用手機CPU、GPU資源的狀況,引發應用耗電增長,部分應用還會出現卡頓現象。併發

建議:佈局

1)儘可能減少繪製窗體的面積。性能

2)減小多個元素同時刷新。大數據

3)減小距離較遠的元素同時刷新。優化

以上建議減小應用在刷新狀態下的數據量,減小數據對帶寬、CPU、GPU的佔用,無形中節省了功耗,提高了應用性能。編碼

圖層優化

image

在全屏界面下,有些應用的界面圖層很是多,究其緣由是開發者沒有將Activity銷燬,致使圖層合成的工做量很大,過分佔用GPU資源,致使卡頓、顯示效果差,同時功耗增大。設計

建議:圖層數量控制在3個如下。

不須要GPU處理的組件減小耦合

有些視頻類應用的視頻流會採用SurfaceTexture或TextureView進行處理,經常出現GPU對界面從新繪製、重複工做的問題,部分場景可能存在時序變化,致使功耗增長,併發生卡頓。

建議:視頻場景不要使用GPU重繪。

視頻解碼

應用有兩種解碼方式:硬解碼和軟解碼。

image

軟解碼是純粹依靠CPU來進行解碼的一種方式,視頻清晰度越高,CPU負載就越重,容易致使CPU能力不足出現卡頓,耗電量增長。

建議:使用硬解碼,對於高清視頻播放類應用的性能、功耗均有保障。

數據請求:

image

視頻播放類應用在線播放須要提早預緩存視頻資源,應用若是頻繁發出網絡請求,緩存過程的頻繁交互就會致使對CPU等資源佔用過分,耗電量增長。

建議:大數據塊的集中下載既能知足用戶體驗又能有效下降WIFI功耗和負載,下載完成後可在間隔一段時間內保持Sleep狀態。

佈局與絕對座標解耦

應用在不一樣分辨率的屏幕下顯示時,若是使用絕對座標會形成應用部分場景顯示偏移,效果沒法保障的問題。

建議:

1)應用佈局時,在使用wrap_content、match_parent 和dp 單位爲 XML 佈局文件中的視圖定義 android:layout_width 和 android:layout_height 時,可確保應用視圖在當前設備屏幕上提供適當尺寸。

2)應用編碼時請勿使用硬編碼像素值,固定像素值將致使應用在不一樣密度的屏幕上出現佈局錯誤。

3)建議應用不要使用AbsoluteLayout 佈局,AbsoluteLayout 強制應用使用固定位置放置子視圖,影響應用顯示效果。

4)在使用尺寸和密度特定資源時,儘管系統會根據當前屏幕配置擴展布局,但在不一樣屏幕尺寸上,應用可能須要調整UI以及提供針對不一樣密度優化的可繪製對象。(指在資源目錄中針對不一樣密度的資源進行定義)

關注安卓綠色聯盟公衆號,回覆關鍵詞"2305"獲取PPT

相關文章
相關標籤/搜索