我浏览了文档:https://www.codenameone.com/javadoc/com/codename1/ui/URLImage.html#fetch
默认情况下,除非调用fetch()方法,否则会在GUI请求时懒惰地获取图像,在这种情况下,IO代码会立即执行。
调用fetch()后,看起来存储文件没有刷新。这是我跑的测试
1)我第一次使用以下图片创建了一个URLImage:" https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"
2)我运行应用程序。图像显示良好
3)我使用新的网址图片运行应用程序" 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();
答案 0 :(得分:1)
文档可能应该澄清,并不是立即同步,因此fetch方法只会将图像添加到下载队列,但在图像实际存在之前不会阻塞。
如果您想要这种行为,URL图像可能不是最佳解决方案。您可以Util.downloadToStorage()
使用Image
下载方法ConnectionRequest
加上addToQueueAndWait
。