在Glide图像加载上设置侦听器仅捕获局部变量一次

时间:2018-02-09 20:30:35

标签: java android android-glide

我使用Glide加载图片,每次调用它时我都会在其上设置一个新的监听器。我希望匿名"新的RequestListener"捕获局部变量" x"每次,但它似乎只是第一次捕获它。它几乎就像Glide忽略了我设置一个新的监听器和重用原始监听器的请求。以下是重现它的代码:

public void loadImage(int x) {
    GlideApp.with(getContext()).load("http://url.to/image.png").listener(new RequestListener<Drawable>() {
        @Override
        public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) { return false; }

        @Override
        public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
            Log.d(TAG, "Value of x: " + x);
            return false;
        }
    }).into(imageView);
}

调用loadImage(0)会导致:
值x:0

随后调用loadImage,无论传入的x值是多少,都会导致:
值x:0

有人知道这里发生了什么吗?

1 个答案:

答案 0 :(得分:0)

我今天有这个确切的问题。使用旧的侦听器继续滑行。这是导致相同的setOnClickListener继续使用的某种方式,因此基本上我的所有按钮都将显示相同的视图。我添加后已修复:

.apply(RequestOptions.skipMemoryCacheOf(true))