我查看了文档:https://www.codenameone.com/javadoc/com/codename1/ui/URLImage.html#fetch
默认情况下,如果不调用fetch()方法,就会像GUI所要求的那样延迟获取图像,在这种情况下,将立即执行IO代码。
看起来,在调用fetch()之后,存储文件不会被刷新。这是我做的测试
1)我第一次用以下图像创建一个URLImage:"272x92dp.png“
2)运行应用程序。图像显示得很好
3)我使用一个新的URL映像"http://awoiaf.westeros.org/images/thumb/9/93/AGameOfThrones.jpg/400px-AGameOfThrones.jpg“运行应用程序,但是我仍然看到前面的图像,尽管正在调用fetch()!
Form hi = new Form("Hi World");
EncodedImage placeholder = EncodedImage.createFromImage(Image.createImage(hi.getWidth(), hi.getWidth() / 5, 0xffff0000), true);
URLImage background = URLImage.createToStorage(placeholder, "400px-AGameOfThrones.jpg",
"https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png");
background.fetch();
Label label = new Label();
label.setIcon(background);
hi.addComponent(label);
hi.show();第二轮:
Form hi = new Form("Hi World");
EncodedImage placeholder = EncodedImage.createFromImage(Image.createImage(hi.getWidth(), hi.getWidth() / 5, 0xffff0000), true);
URLImage background = URLImage.createToStorage(placeholder, "400px-AGameOfThrones.jpg",
"http://awoiaf.westeros.org/images/thumb/9/93/AGameOfThrones.jpg/400px-AGameOfThrones.jpg");
background.fetch();
Label label = new Label();
label.setIcon(background);
hi.addComponent(label);
hi.show();发布于 2016-10-23 01:39:15
文档可能应该被澄清,立即并不意味着同步,所以fetch方法只会将映像添加到下载队列中,但在图像物理存在之前不会阻塞。
如果您想要这样的行为,URL映像可能不是最好的解决方案。您既可以使用Util.downloadToStorage(),也可以在ConnectionRequest和addToQueueAndWait中使用Image下载方法。
https://stackoverflow.com/questions/40198257
复制相似问题