downloadOnly 是同步的还是异步的?

Is downloadOnly synchronous or asynchronous?

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

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

问题2)如果是同步的,那么如何让它变成异步的呢?如果它是异步的,那么如何让它同步?

问题参考Glide v4

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();

一旦将来 returns,图像的字节在缓存中可用。通常 downloadOnly() API 仅用于确保字节在磁盘上可用。尽管您可以访问底层缓存文件,但您通常不想与其交互。

相反,当您以后想要检索图像时,您可以使用正常调用来实现,但有一个例外:

Glide.with(yourFragment)
    .load(yourUrl)
    .diskCacheStrategy(DiskCacheStrategy.ALL)
    .into(yourView);

回答我自己的问题。

Glide.with(getContext()).downloadOnly().load(some_uri).submit();

是异步的。

Glide.with(getContext()).downloadOnly().load(some_uri).submit().get();

同步