6

我正在使用 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)但根据文档,直接使用位图池会导致未定义的行为。

4

1 回答 1

0

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

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

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

于 2016-06-17T04:04:37.990 回答