在 Utils class 中为 Glide 提取 headers

Extract headers for Glide in a Utils class

所以我的 class 中有以下逻辑来使用 Glibe 库加载图像:

   GlideUrl glideUrl = new GlideUrl(url, new LazyHeaders.Builder()
                .addHeader("Auth", authToken)
                .addHeader("User-Agent", userAgent)
                .build());

        Glide.with(imgVw.getContext())
                .load(glideUrl).apply(new RequestOptions().placeholder(placeholder)
                .into(imgVw);

我在很多地方都使用了这段代码,因此我只想在 GlideUtils class 中提取带有 LazyHeaders 的部分。 这是我目前所拥有的:

GlideUtils:

public class GlideUtils {

public GlideUtils() {
    initGlideHeaders();
}

private LazyHeaders.Builder initGlideHeaders() {
    return new LazyHeaders.Builder()
                .addHeader("Auth", authToken)
                .addHeader("User-Agent", userAgent));
} 
}

那么在我的第一个 class 中我将有 :

  GlideUrl glideUrl = new GlideUrl(url, new GlideUtils()).build());

但是我在上面的行中得到一个错误,它是不正确的。我错过了什么?有更好的方法吗?

目前,您只需创建一个 GlideUtils 实例并将其传递给 GlideUrl。但是 GlideUrl 需要 LazyHeaders.

因此,更新您的 GlideUtils 文件以像那样直接创建 LazyHeaders :

public class GlideUtils {

    public static LazyHeaders glideHeaders() {
        return new LazyHeaders.Builder()
                    .addHeader("Auth", authToken)
                    .addHeader("User-Agent", userAgent).build();
    } 
}

然后用它把这些 Headers 传递给你的 GlideUrl :

GlideUrl glideUrl = new GlideUrl(url, GlideUtils.glideHeaders()).build());