Android优化列表的卡顿现象

怎甘沉沦 提交于 2019-12-02 13:52:13

重要的一点:不要在主线程进行耗时操作即可提高滑动的流畅度

  • 不要在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"
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!