天天看點

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"

下一篇: 清華DNS