Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android關於ListView的優化問題

Android關於ListView的優化問題

編輯:關於Android編程

今天在我哥們的帶領下,學習了一些關於ListView的優化方案。現在提出來和大家分享下....

第一點:

在Listview中數據加載時經常用到的ViewHolder,我們需要把它寫成靜態類static,這樣的話數據是共享的在本地緩存中,取出的數據是很快的。

第二點:

如果Listview需要加載圖片的話,我們一般是開子線程去加載數據的,然後再主線程中更新。這樣的話為了良好的用戶體驗,我們經常會設置一張默認圖片,如果數據還在加載,我們就先顯示默認圖片,然後在慢慢加載圖片。

holder.img.setImageDrawable(defDrawable);
holder.img.setBackgroundResource(R.raw.back);
上面的兩種方法都是設置默認圖片的,只是效率上有很大的差距。

holder.img.setImageDrawable(defDrawable) 的工作流程是將一張Drawable添加進去,然後有Android繪畫機制畫出這張圖片。要這樣做的話,我們需要在listView的適配器的構造方法中先把這張圖片獲取到。

Resources res = mContext.getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, R.raw.back);
defDrawable = new BitmapDrawable(res, bitmap);
我們先在raw文件下找到這張圖片,把它加載到內存中,然後把它轉化為bitmap對象,再將它轉化為drawable對象,這樣的話Android的原始繪畫機制可以很快的畫出這張圖片。並且我們在加載圖片的從頭到尾中,只會產生一個對象,不會浪費內存。
holder.img.setBackgroundResource(R.raw.back)的工作流程是先將raw文件夾下的圖片加載到內存,然後在轉化為bitmap對象,再轉為drawable對象,每一張默認圖片都會生成一個對象。如果我們有幾千甚至幾萬張圖片,這樣的可能會內存溢出,程序就會catch掉。

\


\

<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+tdrI/bXjo7q/tLz7yc/D5rXEzbzGrMHLwvCjv7Xatv7VxcO709C809TYtcSho8THysfO0srW1rjV/bC01NpMaXN0dmlld8nPo6zWu9PQztLLyb+qytajrMv8ssW74bzT1NjNvMasoaOyosfSyOe5+87Sv+zL2bXEu6y2r0xpc3R2aWV3o6zL/Na7u+G809TYztLK1ta41+6688Drv6q1xMTH0rvSs7XEyv2+3dDFz6KjrMeww+a7rLn90rPD5rXE0MXPosrHsru74bzT1Ni1xKGjQW5kcm9pZM+1zbPX1LT4tcTUtMn6TGlzdHZpZXejrMjnufvO0sPHv+zL2bustq+1xLuwo6zDv7TO1Nq3rdKztcTKsbryo6zI57n7xOPPuNDEtcS7sKOsu+G40L71tb3T0L+ottm1xNCnufujrLvhutzE0crctcSho8v50tTO0s/ytPO80s3GvPZnaXRodWLJz9K7uPa088nx0LS1xExpc3R2aWV3tcS/qtS0v/K83EZhc3RTY3JvbGxWaWV3o6zQp7n7utzHv7TztcSjrNPQ0OjSqrXExfPT0b/J0tTIpcrUytS1xKGjPC9wPgo8cD7Qoby8x8mjus7Sw8e/ydLUz8jUpLzT1NjSu9KztcTNvMaso6zS1LrztcTPyNPDxKzIz828xqy0+szmo6zV4tH5tcTQp7n7u+G63LrDtcQuLi48L3A+CjxwPjxwcmUgY2xhc3M9"brush:java;">//先加載第一頁圖片 if(!TextUtils.isEmpty(item.picUrl)){ if(position<4){ loadIMG(holder.img, item); } }


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved