Android - ImageLoader不会从URL重新检索图像

时间:2014-08-03 07:47:11

标签: android imageview android-studio android-imageview universal-image-loader

这是名为PicURL的活动页面。我希望应用程序在调用此活动页面时从URL检索图像。

问题是此活动页面只会检索一次图像(第一次调用活动。)

例如,我打开了这个活动,我得到了照片" A"来自网址。然后我覆盖了图片" A"与图片" B"。我重新打开这个活动,但我仍然有照片" A"这应该是图片" B"。

 public class PicURL extends Activity {

    ImageView imageView;

    private ImageLoader imageLoader;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pic_url);

        imageLoader = ImageLoader.getInstance();
        imageView = (ImageView) findViewById(R.id.imageView);


        DisplayImageOptions.Builder optionBuilder = new DisplayImageOptions.Builder();
        optionBuilder.showImageForEmptyUri(R.drawable.ic_launcher);
        optionBuilder.showImageOnFail(R.drawable.ic_launcher);
        optionBuilder.cacheInMemory(true);
        optionBuilder.cacheOnDisk(true);
        DisplayImageOptions options = optionBuilder.build();

        ImageLoaderConfiguration.Builder loaderBuilder =
                new ImageLoaderConfiguration.Builder(getApplicationContext());

        loaderBuilder.defaultDisplayImageOptions(options);
        loaderBuilder.diskCacheExtraOptions(400, 400, null);

        ImageLoaderConfiguration config = loaderBuilder.build();

        if (!imageLoader.isInited()) {
            ImageLoader.getInstance().init(config);
        } // Checked if ImageLoader has been initialed or not.


        String imageUri = "http://abcdef.com/pic1.png"; //Where the app retrieve the image from the link
        imageLoader.displayImage(imageUri, imageView);

    }

为我可怜的英语道歉。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

好像你已经启用了ImageLoader的缓存:

optionBuilder.cacheInMemory(true);
optionBuilder.cacheOnDisk(true);

您需要将这些选项设置为false。 禁用缓存会使您的应用每次都重新加载来自互联网的每张图片,这对您或您的用户来说可能是不受欢迎的。

您可以启用缓存,但会为您真正想要重新加载的网址生成随机查询字符串,例如

String randomString = String.format("?random=%d", System.currentTimeMillis());
String imageUri = "http://abcdef.com/pic1.png"+randomString;
imageLoader.displayImage(imageUri, imageView);