使用负责回收的Glide加载Bitmap时?

Ang*_*ton 5 android android-bitmap android-glide

我正在使用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);
    }
Run Code Online (Sandbox Code Playgroud)

我想知道谁负责回收这个Bitmap或者把它放回到Glide BitmapPool中?Glide似乎没有办法自动或通过使用来重复使用它clear().

我看着使用类似的东西直接将Bitmap添加回池中,Glide.get(context).getBitmapPool().put(img)但根据使用BitmapPool的文档直接导致未定义的行为.

Pen*_*ues 0

根据他们的 wiki,资源重用:如何,您不必回收,因为 Glide 会这样做,而是基于资源计数。

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

尽管如此,您必须显式调用 Glide.clear() 来减少资源数量,因为 glide 只能在替换现有目标/视图的图像时调用 Glide.clear() 。希望这可以帮助。