URLImage获取方法不起作用

时间:2016-10-23 00:05:10

标签: codenameone

我浏览了文档: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();

1 个答案:

答案 0 :(得分:1)

文档可能应该澄清,并不是立即同步,因此fetch方法只会将图像添加到下载队列,但在图像实际存在之前不会阻塞。

如果您想要这种行为,URL图像可能不是最佳解决方案。您可以Util.downloadToStorage()使用Image下载方法ConnectionRequest加上addToQueueAndWait