Android ListView優化思路12則
超藍.jpg
1、ViewHolder模式,而且ViewHolder作為內部類使用時聲明為static的
2、異步加載:耗時的操作放在異步線程中
如果在adapter中的某些操作需要耗費大量的時間,這個時候就要用到異步線程來進行異步就在數據。比如:現在要加載圖片,此時我們需要根據url訪問網絡得到數據,然后將數據解析為Bitmap設置給View
3、listView錯位加載問題:判斷url是否一致解決
4、為圖片設置緩存
5、ListView的滑動時停止加載和分頁加載
6、硬件加速,硬件加速只需要設置--android:hardwareAccelerate="true"即可
7、自定義view降低層級
8、對于一些并非需要刷新整個ui的操作,盡可能做到單個ui刷新,不要讓整個可見視圖整體做視圖渲染
9、listview在拖動的時候背景圖片消失變成黑色背景,等到拖動完畢我們自己的背景圖片才顯示出來;所以需要將android:scrollingCache=”false” 或 android:cacheColorHint=”#00000000″
10、animateCache: ListView默認開啟了animateCache,這會消耗大量的內存,因此會頻繁調用GC,我們可以手動將它關閉掉
11、使用 RecycleView 代替。
ListView 每次更新數據都要 notifyDataSetChanged(),有些太暴力了。RecycleView 在性能和可定制性上都有很大的改善,推薦使用
12、處理空ListView
ListView用于展示列表數據,但當列表中無數據時,ListView不會顯示任何數據或提示,按照完善用戶體驗的需求,這里應該給以無數據的提示。幸好,ListView提供了一個方法——setEmptyView(),通過這個方法,我們可以給ListView設置一個在空數據下顯示的默認提示。
來自:http://www.jianshu.com/p/539218c871cf