ListView的四層優化

 ListView 優化
 0層優化:不優化
 1層優化:最多加載 n+1 個 convertView
複用 convertView 每次不用去加載一個新的 view 複用 convertView 來解決每次都加載一個新的 view 
這樣就不用每次都加載一個新的view到內存中,減少了對內存的使用
 
 2層優化:優化 convertView 裏面的子 view
優化其他的顯示視圖,如 TextView 
一層優化只優化了 convertView 沒有優化 convertView 裏面的子 view,即使一層優化,優化了convertView
   但是裏面的子 view 還是每次都去加載,這樣對內存也是相當好資源的
所有二層優化就是優化 convertView 裏面的子 view
也是使用 setTag 的方式來進行優化
 3層優化:
對圖片的優化,即加載圖片,使用圖片的三級緩存
   圖片的三級緩存
   1).一級緩存(內存緩存),圖片在內存中,直接加載,如果內存緩存中沒有,則向二級緩存中加載圖片
   2).二級緩存(本地緩存),圖片保存在本地SD卡中,如果一級緩存中沒有才在二級緩存中加載圖片,如二級緩存中也沒有
   則向三級緩存中加載,如果有,加載的同時把圖片保存到一級緩存中
   3).三級緩存(服務器緩存),圖片保存在服務器端,如果在一級緩存和二級緩存中都沒有找到圖片,就到服務器端的三級緩存中
  加載,加載過來顯示出來的同時,保存到一級緩存和二級緩存中
使用圖片的三級緩存存在的問題(圖片的閃屏)
   當快速滑動的時候,會出現圖片的緩存,因爲 convertView 的複用,和線程的多次啓動,但是還沒來得及顯示圖片就被複用,
但是又是一個新的線程,同一個視圖,多個線程,多張圖片,所以就會出現閃屏的問題
   解決辦法:
   使用 view 的setTag方法,把要顯示的圖片,保存到裏面
在啓動分線程聯網請求和顯示圖片的時候通過getTag取出來
   再啓動分線程聯網請求圖片是,要請求的圖片是不是要顯示的,如果不是,則結束
在顯示圖片之前判斷是不是要顯示的那張圖片,有可能已經被更改了,如果不是結束,
 4層優化:
   當數據量非常大的時候,就需要使用四次優化,分頁或者其他技術
   數據全部是從服務器端獲取,不可能一次獲取全部的數據,都是每次只獲取部分數據顯示
   而不是全部加載到客戶端進行顯示,可能使用到的技術:分頁,下拉刷新等
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章