首页 > 解决方案 > 代号一:显示来自 URL 的(秘密)图像,不存储也不缓存

问题描述

我有以下代码:

EncodedImage placeholder = EncodedImage.createFromImage(FontImage.createImage(size, size, ColorUtil.GRAY), true);
String url = "...";
Date date = new Date();
URLImage qrCode = URLImage.createToStorage(placeholder, date.getTime() + ".png", url, URLImage.RESIZE_SCALE);
qrCode.fetch();
qrCodeLabel.setIcon(qrCode);

qrCode图像包含不应保存在存储/文件系统上的秘密,也不应以任何方式缓存。它应该只向用户显示一次。

因为这些要求,我的代码当然不能按我的需要工作,因为图像被保存和缓存了。我更喜欢在下载图像之前停止执行代码,而不是此代码首先显示占位符,然后显示图像。

所以,我的问题是我可以使用哪个代码在标签中显示图像,从具有以下要求的 url 下载它:

标签: codenameone

解决方案


URLImage专为缓存而设计。您显然可以删除存储文件,但这有点违背课程的核心目的。

只需使用类似的东西:

ConnectionRequest q = new ConnectionRequest(imageUrl, false) {
     public void postResponse() {
         EncodedImage qr = EncodedImage.create(getResponseData());
         labelForQr.setIcon(qr);
         parentForm.revalidate();
     }
};
addToQueue(q);

推荐阅读