2017-04-01 2 views
1

URLImage.createCachedImageが呼び出されて画像が利用できない(接続されていないなど)ときに、再び呼び出されない接続が復帰したらリロードしてください。コードネーム1:画像をロードするときにサーバー/接続が使用できないようにする

説明:接続が利用できない場合

、それはブランク画像を示しています。また、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); 
} 

答えて

2

あなたが正しいです。ネットワークに問題がある場合、URLImageはただ黙って失敗します。

何らかの理由でURLImageがイメージのダウンロードを完了していない場合、そのisAnimation()メソッドはtrueを返します。これは、ダウンロードが完了していないかどうかを検出する方法です。ダウンロードが失敗したのか、完了していないのかはわかりませんが、何らかのタイムアウトと組み合わせて画像がダウンロードされているかどうかを確認し、同じURLの新しいURLImageで置き換えます。

私は知っています。課題トラッカーにRFEを提出することができます。リクエストを評価します。

+0

URLImage.createCachedImageは別のスレッドで実行されますか?私は常に競争状態のようなものを得ているようです。画面が初めて読み込まれるとき、画像は常にそこにはありません。その後、アプリを再実行すると表示されます。 – ikevin8me

+0

この問題は、 'Image scaledImage = image.scaled(50、50);'を呼び出すと起こりそうです。イメージがまだロードされていない場合は、単純にプレースホルダイメージの縮尺のコピーを作成することができます。 –

+0

ありがとう、@steve。それが答えでした! – ikevin8me

関連する問題