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 中元素避免半透明: 半透明繪製需要大量乘法計算,在滑動時不停重繪會造成大量的計算,在比較差的機子上會比較卡。 在設計上能不半透明就不不半透明。實在要弄就把在滑動的時候把半透明設置成不透明,滑動完再重新設置成半透明。

參考資料:

https://www.jianshu.com/p/b7741023bc6f

https://www.jianshu.com/p/f0408a0f0610

https://blog.csdn.net/xk632172748/article/details/51942479

https://blog.csdn.net/sweetvvck/article/details/12753851

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章