在AppGlideModule中使用RequestOptions和Glide 4

Ale*_* D. 7 java android image-loading android-glide

我使用了diskCacheStrategyAppGlideModule库,库4.1.1的版本.这是我的滑行模块类:

@GlideModule
public class GlideUtil extends AppGlideModule {

    private final int IMAGE_CACHE_SIZE = 20 * 1024 * 1024; // 20 MB
    private final String IMAGE_FOLDER = "/User/Images";

    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        RequestOptions requestOptions = new RequestOptions();
        requestOptions.format(DecodeFormat.PREFER_ARGB_8888);
        requestOptions.diskCacheStrategy(DiskCacheStrategy.ALL);
        builder.setDefaultRequestOptions(requestOptions);
        InternalCacheDiskCacheFactory factory = new InternalCacheDiskCacheFactory(context, IMAGE_FOLDER, IMAGE_CACHE_SIZE);
        builder.setDiskCache(factory);

    }

    @Override
    public boolean isManifestParsingEnabled() {
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

此代码成功运行.但是当我将滑动库的版本更新到4.3.1时

compile 'com.github.bumptech.glide:glide:4.3.1' 
annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1'
Run Code Online (Sandbox Code Playgroud)

在GlideUtil类中,我看到了消息:"未使用格式的结果","未使用diskCacheStrategy的结果":

在此输入图像描述

那么,如何解决这个问题呢?那些方法formatdiskCacheStrategy工作是否适用于format4.3.1?

azi*_*ian 5

问题是,您没有使用 builder 对象,该对象由 返回format(),因此您的操作变得毫无意义,这就是 lint 警告您的原因。您可以看到用 注释的方法@CheckResult,这就是 lint 理解的方式,您走错了路,因为您“没有检查该方法返回的结果”

而是执行以下操作:


    RequestOptions requestOptions = new RequestOptions();
    requestOptions = requestOptions.format(DecodeFormat.PREFER_ARGB_8888);
    requestOptions = requestOptions.diskCacheStrategy(DiskCacheStrategy.ALL);

现在警告将消失。

或者您可以直接执行以下操作:


    builder.setDefaultRequestOptions(new RequestOptions()
                                        .format(DecodeFormat.PREFER_ARGB_8888)
                                        .diskCacheStrategy(DiskCacheStrategy.ALL));