Just Only One 2020-12-14 16:06 采纳率: 0%
浏览 495

RecycleView使用Glide不断加载图片会oom,有什么办法解决?

每次点击添加都增加一个条目来显示图片,添加到一定条目数量之后oom了

  • 写回答

7条回答 默认 最新

  • aLvXuan 2020-12-14 17:37
    关注

    正常来说,RecyclerView因为复用ViewHolder 的原因,并不会出现 OOM,多出现在 RecyclerView嵌套了可滚动的控件,比如 RecyclerView+RecyclerView, ScrollView + RecyclerView, RecyclerView + GridView 等等,嵌套之后,ViewHoler 得不到复用,会一直叠加,最终oom,如果你是嵌套了,可以考虑只使用一个RecyclerView 多个 ViewHoler Type 的方式去实现。

    关于Glide,改一下加载的大小,可能会有所改观
     

     Glide.with(context)
           .load(url)
           .override(width, height)

    另外,ViewHolder 里面使用 Glide,最好是绑定 ImageView 的 tag,不会加载错乱

    holder.itemView.setTag(R.id.imageView_01, position)
    
    Glide.with(context)
         .load(url)
         .into(object : CustomViewTarget<ImageView, Bitmap>(imageView) {
    
              override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
                   if (position != holder.itemView.getTag(R.id.imageView_01)) {
                        return
                   }
                   imageView.setImageBitmap(resource)
              }
    
         }.view)
    
    评论

报告相同问题?