代号一:处理加载图像时服务器/连接不可用的问题


似乎

如果在调用URLImage.createCachedImage加载并且图像不可用(无连接等(时,当连接恢复时不会再次调用它以重新加载。

描述:

当连接不可用时,它会显示空白图像。当再次调用 Display.getInstance((.callSerially(...( 时,它仍然显示相同的空白图像。它似乎不是在调用连接来尝试加载图像,但空白图像显然已成为缓存。

不确定我是否正确描述了我的问题,但这里有一个简化的问题:如何处理图像加载并在连接/服务器不可用时处理事件? (我以为URLImage.createCachedImage知道图像是否未加载,并会重试。

我有这段代码来加载图像:

protected static final Image loadImage(String imageAccessLocation) {
    int filenameIndex = imageAccessLocation.lastIndexOf("/");
    String filename = imageAccessLocation.substring(filenameIndex + 1);
    String imageAccessBaseLocation = Application.getInstance().getImagesAccessBaseLocation();
    String imageAccessURL = imageAccessBaseLocation + imageAccessLocation;
    int displayWidth = Display.getInstance().getDisplayWidth();
    EncodedImage imagePlaceholder = EncodedImage.createFromImage(Image.createImage(displayWidth, displayWidth / 5, 0xffff0000), true);
    Image image = URLImage.createCachedImage(filename, imageAccessURL, imagePlaceholder, FLAG_RESIZE_SCALE);
    return image;
}
protected static final Container prepareImageContainer(Item item) {
    Image image = item.getImage();
    if(image == null) {
        return null;
    }
    Image scaledImage = image.scaled(50, 50);
    Container imageContainer = new Container();
    imageContainer.add(scaledImage);
    return imageContainer;
}
private final void prepare() {
    Container imageContainer = prepareImageContainer(lookslike);
    Container textContainer = prepareTextDescription(lookslike);
    add(imageContainer);
    add(textContainer);
}

你是对的。 如果存在网络问题,URLImage 将静默失败。

如果 URLImage 由于某种原因尚未完成图像下载,则其isAnimation()方法将返回 true。 这是一种检测它是否尚未完成下载的方法。 它不会告诉您下载是失败还是尚未完成,但您可以将其与某种超时相结合,以检查图像是否已下载,如果没有,请将其替换为同一 URL 的新 URLImage。

不理想,我知道。 您可以在问题跟踪器中提交 RFE,我们将评估请求。

最新更新