downloadOnly在Android Glide中是同步还是异步的?

oxf4rvwz  于 2023-02-06  发布在  Android
关注(0)|答案(2)|浏览(141)

请看下面的代码行:

Glide.with(getContext()).downloadOnly().load(some_uri).submit();
    • 问题1)**以上是同步还是异步?
    • 问题2)**如果上述是同步的,那么如何使其异步?
    • 问题3)**如果上述是异步的,那么如何使其同步?

该问题专门针对Glide版本4 API。

v1uwarro

v1uwarro1#

回答我自己的问题。

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

是异步的。

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

是同步的。

qvtsj1bj

qvtsj1bj2#

仅Glide下载()API允许您将映像的字节下载到磁盘缓存中,以便以后检索。您可以使用downloadOnly()异步**仅下载(Y目标)在ui线程上或同步donwloadOnly(int,int)**在后台线程上。注意参数略有不同,异步API采用Target,而同步API采用整数宽度和高度。
要在后台线程上下载图像,必须使用同步版本:

FutureTarget<File> future = Glide.with(applicationContext)
    .load(yourUrl)
    .downloadOnly(500, 500);
File cacheFile = future.get();

一旦future返回,图像的字节就可以该高速缓存中使用。通常downloadOnly()API只用于确保字节在磁盘上可用。尽管您可以访问底层缓存File,但通常不想与它交互。
当您以后想要检索图像时,可以使用普通调用来实现,但有一个例外:

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

相关问题