1. 程式人生 > >Android優化列表的卡頓現象

Android優化列表的卡頓現象

重要的一點:不要在主執行緒進行耗時操作即可提高滑動的流暢度

  • 不要在getView中執行耗時操作。直接在getView中載入圖片肯定會卡頓,因為載入圖片是耗時操作,這種操作必須採用非同步的方式處理,如ImageLoader中的實現
  • 控制非同步任務的執行頻率,getView中使用ImageLoader的bindBitmap方法非同步載入圖片,但是當用戶頻繁的上下滑動,這樣一瞬間會有上百個非同步任務,這些非同步任務會造成執行緒池的擁堵並隨即帶來大量的UI更新。這個時候可以考慮在列表滑動的時候不載入圖片,停止時載入圖片
    例如:
public void onScrollStateChanged
(AbsListView view, int scrollState) { if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { mIsGridViewIdle = true; mImageAdapter.notifyDataSetChanged(); } else { mIsGridViewIdle = false; } }

然後在getView中判斷:

if (mIsGridViewIdle && mCanGetBitmapFromNetWork) {
    imageView.setTag
(R.id.imageloader_uri,uri); Glide.with(getApplicationContext()).load(uri).placeholder(R.drawable.image_default).crossFade().into(imageView); //mImageLoader.bindBitmap(uri, imageView, mImageWidth, mImageWidth); }
  • 硬體加速:設定android:hardwareAccelerated="true"