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