首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与android RecyclerView一起滑翔显示OutOfMemory错误

与android RecyclerView一起滑翔显示OutOfMemory错误
EN

Stack Overflow用户
提问于 2016-12-23 18:28:42
回答 3查看 7.4K关注 0票数 4

我使用幻灯片与RecyclerView,以加载许多图像(约200),有不同的大小和尺寸。

我有三个问题:

  1. 图像有时加载成功,有时应用程序崩溃给出OOM。
  2. 如果图像加载成功,则滚动是滞后的。
  3. 如果我刷新布局并重新加载相同的图像,那么它尝试加载图像,但在完成之前失败并给出OOM。

以下是有关守则:

代码语言:javascript
复制
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);
    }
}

请指导我知道我做错了什么。我以前从来没有处理过这么多的图片。

EN

回答 3

Stack Overflow用户

发布于 2016-12-24 13:37:53

我已经找到原因了。问题是,我使用的是放置在NestedScrollView之上的RecyclerView。这可能导致所有图像同时加载。我删除了NestedScrollView,并要求大约200张图片,它现在工作非常顺利。

参考资料:在幻灯片中加载更多图像时内存不足

谢谢你的回信。它们也很有用!

票数 6
EN

Stack Overflow用户

发布于 2016-12-23 22:44:41

没有简单的方法来确定是什么导致了您的OutOfMemoryException,但是有一些方法可以防止它。首先,我会阅读本期,然后查看Android的内存监视器功能,以确定应用程序中的其他地方是否会导致内存泄漏。

然后,我会查看一些图像大小,以及当图像被绑定时,是否需要确定裁剪图像的附件。幻灯片中的.Override(width, height)功能可以帮助您(宽度和高度将随着像素进行调整)。更进一步的.centerCrop().fitCenter()也可能有所帮助。

  1. 滑动图像调整与缩放

如果这一点都没有帮助,我建议添加一个加载更多的功能。因此,您最初只加载一小部分图像,然后用户可以使用按钮加载更多的图像,当他们滚动到底部或SwipeRefreshLayout时。

  1. LoadMore RecyclerView和ProgressBar教程- CodeTrick
  2. SwipeRefreshLayout教程
  3. 带有LoadMore实现的RecyclerView特性

希望这能有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2016-12-23 18:46:46

主要的问题总是与图像,如果他们是高的,有总有OOM调用。此外,动画也没有帮助,特别是在列表/回收者的看法。试着缩小图像大小,使用单独的拇指。我更愿意切换到毕加索,而不是滑翔,因为它有调整大小的功能,这是相当好的工作,并提高性能与大图像显着。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41306242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档