【问题标题】:When loading a Bitmap using Glide who is responsible for recycling it?当使用 Glide 加载 Bitmap 时,谁负责回收它?
【发布时间】:2015-07-16 00:32:10
【问题描述】:

我正在使用 Glide 加载位图以创建 gif。

     for (int i = 0, count = files.size(); i < count; i++) {
         Bitmap img = Glide.with(context)
             .load(files.get(i))
             .asBitmap()
             .centerCrop()
             .into(GIF_EXPORT_SIZE / 2, GIF_EXPORT_SIZE / 2)
             .get();

         // addFrame creates a copy of img, so we can re-use this bitmap
         encoder.addFrame(img);
    }

我想知道谁负责回收此 Bitmap 或将其放回 Glide BitmapPool 中? Glide 似乎没有办法自动重用它或使用clear()

我曾考虑使用 Glide.get(context).getBitmapPool().put(img) 之类的方式将位图直接添加回池中,但根据文档,直接使用位图池会导致未定义的行为。

【问题讨论】:

    标签: android android-bitmap android-glide


    【解决方案1】:

    根据他们的 wiki,Resource re-use: How,您不必回收,因为 Glide 会这样做,而是基于资源计数。

    当引用计数降至零时,Glide 将回收资源并将其内容返回到任何可用的池中。

    虽然,您必须显式调用 Glide.clear() 来减少资源计数,因为 glide 只能在替换现有目标/视图的图像时调用 Glide.clear()。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      相关资源
      最近更新 更多