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

How to log each request url from Glide?

我使用Glide下载图片已经有很长一段时间了,所以到处都是这样的代码:

      GlideApp.with(getContext())
            .load(imgUrl)
            .into(imgView);

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

      GlideApp.with(getContext())
            .load(imgUrl)
            .listener(requestListener) // log urls through listener
            .into(imgAd);

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

我使用 Glide v4 并且我已经检查了 ,它将 url 直接记录到 logcat 但没有记录到我的本地存储以供进一步分析。

Glide 4.9.0 可以设置默认的requestListener。

link 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;
            }
        });
    }
}

在自定义 Activity 片段中

GlideApp.with(object).addDefaultRequestListener()

Glide.with(object).addDefaultRequestListener()