考虑以下代码行
Glide.with(getContext()).downloadOnly().load(some_uri).submit();
问题1)是同步还是异步?
问题2)如果它是同步的,那么如何使其异步?如果它是异步的,那么如何使它同步?
问题涉及Glide v4
答案 0 :(得分:1)
回答我自己的问题。
Glide.with(getContext()).downloadOnly().load(some_uri).submit();
是异步。
Glide.with(getContext()).downloadOnly().load(some_uri).submit().get();
是同步
答案 1 :(得分:0)
Glide的downloadOnly()API允许您将图像的字节下载到磁盘缓存中,以便以后可以检索它。您可以在ui线程上异步使用downloadOnly() downloadOnly(Y target),或在后台线程上同步 donwloadOnly(int,int)。请注意,参数略有不同,异步api采用Target,同步api采用整数宽度和高度。
要在后台线程上下载图像,必须使用同步版本:
FutureTarget<File> future = Glide.with(applicationContext)
.load(yourUrl)
.downloadOnly(500, 500);
File cacheFile = future.get();
一旦未来返回,图像的字节在缓存中可用。通常,downloadOnly()API仅用于确保磁盘上的字节可用。虽然您可以访问底层缓存文件,但通常不希望与它进行交互。
相反,当您以后想要检索图像时,可以使用普通调用执行此操作,但有一个例外:
Glide.with(yourFragment)
.load(yourUrl)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(yourView);