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"
发布了30 篇原创文章 · 获赞 3 · 访问量 4万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览