2016-10-23 3 views
1

Я прошел через документации: https://www.codenameone.com/javadoc/com/codename1/ui/URLImage.html#fetchURLImage выборки метод не работает

По умолчанию изображение скачиваются лениво, как она запрашивается с помощью графического интерфейса пользователя, если не получать() метод вызывается в этом случае код IO выполняется немедленно.

Похоже, что файл хранилища не обновляется после вызова fetch(). Вот тест я побежал

1) создать URLImage в первый раз со следующим изображением: «https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_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(); 

ответ

1

документация, вероятно, следует уточнить, сразу не означает, что синхронно, так что выборки метод будет просто добавить изображение в очередь загрузки, но не будет блокировать, пока изображение физически присутствует.

Если вы хотите, чтобы такой образ URL-адреса поведения был, вероятно, не лучшим решением. Вы можете использовать Util.downloadToStorage() или методы загрузки Image в ConnectionRequest в сочетании с addToQueueAndWait.

+0

спасибо. Я хотел бы понять, что происходит в фоновом режиме, на основе того, какие критерии он обновляет/загружает изображение. Я запускаю приложение несколько раз подряд, и изображение не обновляется. Это зависит от конкретной последней отметки времени загрузки? – 3lix

+1

'URLImage' никогда не загружает загруженное изображение. Он не проверяет наличие обновлений. Если вы хотите принудительно выполнить обновление, вам необходимо удалить локальный файл хранилища. –

+0

Я понимаю, как это работает сейчас. благодаря – 3lix

Смежные вопросы