使用android ReclerView滑行显示OutOfMemory Error(OOM)

Usm*_*man 3 android out-of-memory android-recyclerview android-glide

我正在使用Glide和RecyclerView来加载许多具有不同尺寸和尺寸的图像(大约200个).

我有三个问题:

  1. 图像有时加载成功,有时应用程序崩溃给OOM.

  2. 如果图像成功加载,则滚动是滞后的.

  3. 如果我刷新布局并重新加载相同的图像,那么它会尝试加载图像但在完成之前失败并给出OOM.

以下是相关代码:

public static class MyViewHolder extends RecyclerView.ViewHolder {

    @Override
    public void onBindViewHolder(final MyViewHolder holder, final int listPosition) {
            ImageView imageView = holder.imageView;
            Glide.with(imageView.getContext())
                    .load(tweetMapArray.get(listPosition).get("imageURL").toString())
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .crossFade()
                    .into(imageView);
    // imageURL is a valid URL for each item
    }

    @Override
    public void onViewDetachedFromWindow(MyViewHolder holder) {
        super.onViewDetachedFromWindow(holder);
        Glide.clear(holder.imageView);
    }
}
Run Code Online (Sandbox Code Playgroud)

请指导我做错了什么.我之前没有使用过如此多的图像.

Usm*_*man 5

我找到了原因.问题是我使用的是放在RecyclerView上面的NestedScrollView.这可能导致所有图像立即加载.我删除了NestedScrollView并请求了大约200张图片,现在它的工作非常流畅.

参考:内存不足错误在Glide中加载更多图像时

感谢您撰写回复.它们也很有用!