排除由於錯誤的繪製方法,導致CPU佔用過高,進而導致耗電量高
檢測方式參考大衆點評App的短視頻耗電量優化實戰
首先打開開發者選項,打開GPU視圖更新的開關,然後看看應用內部有哪些不必要的UI刷新,
首頁快速組隊頁面,列表中查看更多在一直刷新,直接看代碼,
這裏有一個自定義View,繼續看TextViewWideContent的代碼
分析代碼發現在onDraw()裏面調用了setPadding(),繼續看setPadding()的源碼,
可以看到這裏面調用了頁面invalidate(),這就導致了onDraw()方法的循環調用,所以頁面會持續刷新。結論就是在自定義View的onDraw()方法裏面,調用setPadding(),會導致頁面重複繪製
解決辦法也很簡單把setPadding放到onLayout()裏面去。
錯誤代碼如下:
在CoordinatorLayout+AppBarLayout頁面結構中,錯誤的將底部依賴於頭部控件,導致底部一直在刷新,去掉 app:layout_anchor="@id/user_appbar_layout" 就好了。
具體原因還在排查,可能是第三方庫導致的,要更換隻能換庫。
聊天室麥位刷新導致的的頁面重繪,這邊似乎是需求如此,需要定期刷新。可能有更好的實現方式,先記錄一下。
總結一下: