1. 程式人生 > >ListView的相關優化

ListView的相關優化

由於ListView的優化是面試中的常考點,現整理一下,主要有以下的優化方法:

1、複用convertView,對convetView進行判空,當convertView不為空時重複使用,為空則初始化,從而減少了很多不必要的View的建立、減少findViewById的次數,
2、避免在getView方法中做耗時操作
3、採用ViewHolder模式快取item條目的引用
4、給listView設定滾動監聽器 根據不同狀態 不同處理資料 分批分頁載入 根據listView的狀態去操作,比如當列表快速滑動時不去開啟大量的非同步任務去請求圖片
5、listview每個item層級結構不要太複雜
6、listview每個item中非同步載入圖片,並對圖片載入做優化,(關於Listview分頁載入和圖片非同步載入思路請看接下來的文章內容)
7、listview每個item中不要建立執行緒
8、儘量能保證 Adapter 的 hasStableIds() 返回 true 這樣在 notifyDataSetChanged() 的時候,如果item內容並沒有變化,ListView 將不會重新繪製這個 View,達到優化的目的
9、在一些場景中,ScollView內會包含多個ListView,可以把listview的高度寫死固定下來。 由於ScollView在快速滑動過程中需要大量計算每一個listview的高度,阻塞了UI執行緒導致卡頓現象出現,如果我們每一個item的高度都是均勻的,可以通過計算把listview的高度確定下來,避免卡頓現象出現
10、使用 RecycleView 代替listview: 每個item內容的變動,listview都需要去呼叫notifyDataSetChanged來更新全部的item,太浪費效能了。RecycleView可以實現當個item的區域性重新整理,並且引入了增加和刪除的動態效果,在效能上和定製上都有很大的改善
11、ListView 中元素避免半透明: 半透明繪製需要大量乘法計算,在滑動時不停重繪會造成大量的計算,在比較差的機子上會比較卡。 在設計上能不半透明就不不半透明。實在要弄就把在滑動的時候把半透明設定成不透明,滑動完再重新設定成半透明。

參考資料: