android - 使用 Glide 加载位图时,谁负责回收它?

标签 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);
    }

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

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

最佳答案

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

When the reference count drops to zero, Glide will recycle the resource and return its contents to any available pools.

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

关于android - 使用 Glide 加载位图时,谁负责回收它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31443503/

相关文章:

android - 显示本地存储中的图像时出现 FileNotFoundException

java - 如何保存位图的正确旋转

java - 如何从另一个 Activity 刷新我的 Textview

Android 利用 dalvik 类 : Preferences

android - 关闭在后台运行的 Activity

java - 找不到 GlideApp

java - 使用滑动加载图像并根据图像宽度更改 ImageView 宽度

android - 菜单android上的复选框项目状态

Android使用PorterDuff合并图片

android - 在 Android 中使用 Canvas 和位图,如何获取此图像?