downloadOnly是同步还是异步?

时间:2017-12-31 18:07:04

标签: android android-glide

考虑以下代码行 Glide.with(getContext()).downloadOnly().load(some_uri).submit();

问题1)是同步还是异步?

问题2)如果它是同步的,那么如何使其异步?如果它是异步的,那么如何使它同步?

问题涉及Glide v4

2 个答案:

答案 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);