应用前台省电秘籍——这些常见功耗雷坑不要再跳了
使用應用時,有時會出現掉電快、卡頓、過度發熱等問題,影響用戶體驗的同時,也嚴重影響了應用使用時長和用戶留存,如何解決上述問題?本文華為顯示流程功耗優化專家王文華將分享議題——低功耗前臺顯示。
手機器件包括SOC、TP、Modem、GPS、Audio、Camer等主要器件,這些器件在使用時對功耗的影響比較大。
上圖展示的是不同器件對手機功耗帶來的影響,下文將通過從主流應用中發現的問題實例,對應用功耗產生影響的設計因素展開介紹。
視圖設計
許多應用存在無效刷新、多元素同時刷新等問題,導致數據運算量增加,出現過度占用手機CPU、GPU資源的情況,引起應用耗電增加,部分應用還會出現卡頓現象。
建議:
1)盡量減小繪制窗體的面積。
2)減少多個元素同時刷新。
3)減少距離較遠的元素同時刷新。
以上建議減少應用在刷新狀態下的數據量,減少數據對帶寬、CPU、GPU的占用,無形中節省了功耗,提升了應用性能。
圖層優化
在全屏界面下,有些應用的界面圖層非常多,究其原因是開發者沒有將Activity銷毀,導致圖層合成的工作量很大,過度占用GPU資源,導致卡頓、顯示效果差,同時功耗增大。
建議:圖層數量控制在3個以下。
不需要GPU處理的組件減少耦合
有些視頻類應用的視頻流會采用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
總結
以上是生活随笔為你收集整理的应用前台省电秘籍——这些常见功耗雷坑不要再跳了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 自定义Button按钮显
- 下一篇: B2C(ecstore) 商城lnmp环