天天看点

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