这是名为 PicURL 的 Activity 页面。我希望应用程序在调用此 Activity 页面时从 URL 检索图像。
问题是这个 Activity 页面只会检索图像一次(第一次调用 Activity 时。)
例如,我打开这个 Activity ,我从 URL 中得到了图片“A”。然后我用图片“B”覆盖图片“A”。我重新打开此 Activity ,但我仍然看到应该是图片“B”的图片“A”。
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);
}
为我糟糕的英语道歉。 感谢您的帮助!
最佳答案
似乎您启用了 ImageLoader 的缓存:
optionBuilder.cacheInMemory(true);
optionBuilder.cacheOnDisk(true);
您需要将这些选项设置为false
。
禁用缓存将使您的应用每次都重新加载来自互联网的所有图像,这对您或您的用户来说可能是不希望的。
您可以启用缓存,但会为您真正想要重新加载的 URL 生成一个随机查询字符串,例如,
String randomString = String.format("?random=%d", System.currentTimeMillis());
String imageUri = "http://abcdef.com/pic1.png"+randomString;
imageLoader.displayImage(imageUri, imageView);
关于Android - ImageLoader 不会从 URL 重新检索图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25102681/