android - 是否可以让 Android Glide 等待/重新加载保存在另一个线程中的图像?
问题描述
我在 AndroidGlide
的绑定适配器中使用。RecyclerView
当RecyclerView
用户导航出细节片段时加载,返回到显示细节片段中刚刚发生的缩略图的画廊片段。
有时在RecyclerView
加载时,其中的一个图像RecyclerView
仍在coroutine
由细节片段启动的另一个线程(如果重要的话是 Kotlin)中写入。
Glide
找到图像并显示它,即使它不完整,也会导致画廊的RecyclerView
.
有没有办法让绑定适配器在加载之前等待图像在另一个线程中完成写入,或者在完成后重新加载它?
如果重要的话,图像是PNGs
。
这是我在adapter
课堂上的代码:
@BindingAdapter("memoThumb")
fun memoThumb(view: ImageView, memo: Memo) {
val imageUrl = "${getPath(memo.uuid)}$THUMB_NAME"
if (imageUrl.isNotEmpty()) {
Glide.with(view.context)
.load(imageUrl)
.apply(RequestOptions()
.signature(ObjectKey(System.currentTimeMillis()))
.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
)
.transition(DrawableTransitionOptions.withCrossFade())
.into(view)
}
}
谢谢!
约翰
解决方案
后台线程在后台线程上加载图像也很简单,使用 submit(int, int):
FutureTarget<Bitmap> futureTarget =
Glide.with(context)
.asBitmap()
.load(url)
.submit(width, height);
Bitmap bitmap = futureTarget.get();
// 对位图做一些事情,然后当你完成它时:
Glide.with(context).clear(futureTarget);
如果您不需要后台线程本身的 Bitmap 或 Drawable,您也可以像在前台线程上一样在后台线程上启动异步加载:
Glide.with(context)
.asBitmap()
.load(url)
.into(new Target<Bitmap>() {
...
});
请让我知道哪个部分让您感到困惑,以及您使用的是 glide v3 还是 v4
推荐阅读
- sql - 从 SQL 日志中识别 Django 查询集
- powershell - Get-ADUser using old pre-Windows 2000 Logon name instead of CN
- react-native - 使用 generator-rn-toolbox 应用图标时出现问题
- javascript - React can't null datetime-local input field
- linux-device-driver - i2c 代替 mdio,marvell phy 驱动
- javascript - How to fix "Property 'getAll' does not exist on type 'typeof firestore'"
- mysql - 如何将列添加到表中?
- c - 打印出这个星形的问题
- javascript - 检查集合中的日期是否是 3、6 或 9 个月(等等)之前
- android - 片段内未显示警报对话框