使用應用時,有時會出現掉電快、卡頓、過分發熱等問題,影響用戶體驗的同時,也嚴重影響了應用使用時長和用戶留存,如何解決上述問題?本文華爲顯示流程功耗優化專家王文華將分享議題——低功耗前臺顯示。android
手機器件包括SOC、TP、Modem、GPS、Audio、Camer等主要器件,這些器件在使用時對功耗的影響比較大。緩存
上圖展現的是不一樣器件對手機功耗帶來的影響,下文將經過從主流應用中發現的問題實例,對應用功耗產生影響的設計因素展開介紹。網絡
許多應用存在無效刷新、多元素同時刷新等問題,致使數據運算量增長,出現過分佔用手機CPU、GPU資源的狀況,引發應用耗電增長,部分應用還會出現卡頓現象。併發
建議:佈局
1)儘可能減少繪製窗體的面積。性能
2)減小多個元素同時刷新。大數據
3)減小距離較遠的元素同時刷新。優化
以上建議減小應用在刷新狀態下的數據量,減小數據對帶寬、CPU、GPU的佔用,無形中節省了功耗,提高了應用性能。編碼
在全屏界面下,有些應用的界面圖層很是多,究其緣由是開發者沒有將Activity銷燬,致使圖層合成的工做量很大,過分佔用GPU資源,致使卡頓、顯示效果差,同時功耗增大。設計
建議:圖層數量控制在3個如下。
有些視頻類應用的視頻流會採用SurfaceTexture或TextureView進行處理,經常出現GPU對界面從新繪製、重複工做的問題,部分場景可能存在時序變化,致使功耗增長,併發生卡頓。
建議:視頻場景不要使用GPU重繪。
應用有兩種解碼方式:硬解碼和軟解碼。
軟解碼是純粹依靠CPU來進行解碼的一種方式,視頻清晰度越高,CPU負載就越重,容易致使CPU能力不足出現卡頓,耗電量增長。
建議:使用硬解碼,對於高清視頻播放類應用的性能、功耗均有保障。
視頻播放類應用在線播放須要提早預緩存視頻資源,應用若是頻繁發出網絡請求,緩存過程的頻繁交互就會致使對CPU等資源佔用過分,耗電量增長。
建議:大數據塊的集中下載既能知足用戶體驗又能有效下降WIFI功耗和負載,下載完成後可在間隔一段時間內保持Sleep狀態。
應用在不一樣分辨率的屏幕下顯示時,若是使用絕對座標會形成應用部分場景顯示偏移,效果沒法保障的問題。
建議:
1)應用佈局時,在使用wrap_content、match_parent 和dp 單位爲 XML 佈局文件中的視圖定義 android:layout_width 和 android:layout_height 時,可確保應用視圖在當前設備屏幕上提供適當尺寸。
2)應用編碼時請勿使用硬編碼像素值,固定像素值將致使應用在不一樣密度的屏幕上出現佈局錯誤。
3)建議應用不要使用AbsoluteLayout 佈局,AbsoluteLayout 強制應用使用固定位置放置子視圖,影響應用顯示效果。
4)在使用尺寸和密度特定資源時,儘管系統會根據當前屏幕配置擴展布局,但在不一樣屏幕尺寸上,應用可能須要調整UI以及提供針對不一樣密度優化的可繪製對象。(指在資源目錄中針對不一樣密度的資源進行定義)
關注安卓綠色聯盟公衆號,回覆關鍵詞"2305"獲取PPT