如何记录 Glide 的每个请求 url?

Pai*_*ang 0 java android kotlin android-glide

我已经使用Glide下载图片很长时间了,所以这样的代码比比皆是:

      GlideApp.with(getContext())
            .load(imgUrl)
            .into(imgView);
Run Code Online (Sandbox Code Playgroud)

突然我需要记录每个图像的网址以进行进一步分析。而不是搜索 Glade 的每个用法并像这样更改代码:

      GlideApp.with(getContext())
            .load(imgUrl)
            .listener(requestListener) // log urls through listener
            .into(imgAd);
Run Code Online (Sandbox Code Playgroud)

有什么方法可以像 Glide 的默认选项一样全局添加 requestListener ,这样我就不需要搜索和更改整个应用程序中的每个 Glide 用法?

我使用 Glide v4,并且检查了将 url 直接记录到 logcat 但不记录到本地存储以进行进一步分析的帖子。

fan*_*jyl 5

Glide 4.9.0 可以设置默认的 requestListener。

链接https://github.com/bumptech/glide/releases/tag/v4.9.0 https://github.com/bumptech/glide/commit/37127f0f817d4a11dfdcc447946397b5288de593

在自定义 AppGlideModule 中

@GlideModule
public class MyAppGlideModule extends AppGlideModule {

    @Override
    public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
        builder.addGlobalRequestListener(new RequestListener<Object>() {
            @Override
            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Object> target, boolean isFirstResource) {
                return false;
            }

            @Override
            public boolean onResourceReady(Object resource, Object model, Target<Object> target, DataSource dataSource, boolean isFirstResource) {
                return false;
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

在自定义活动片段中

GlideApp.with(object).addDefaultRequestListener()

Glide.with(object).addDefaultRequestListener()