インターネット経由で画像をダウンロードし、ListView で表示するアプリを作っているときに、特定の画像だけダウンロードができないという現象に出くわしました。

こんな感じで、特定の画像だけ読み込みが終わりません。
Logcat にはこんなメッセージが。
08-21 20:59:11.663: DEBUG/skia(2053): --- decoder->decode returned false
しかも不可解なことに、
Xperia では発生しないのに
IS05 と HTC Aria では発生してました。
結局たどりついたのは、画像をダウンロードするメソッド。
どうやらこの中で使っている InputStream のバグみたい。
修正前のNGメソッド↓
// URLからBitmapへの変換
public static Bitmap getBitmapFromURL(String src) {
try {
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
修正後のOKメソッド↓
// URLからBitmapへの変換
public static Bitmap getBitmapFromURL(String src) {
HttpGet httpRequest = new HttpGet(src);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response;
try {
response = (HttpResponse) httpclient.execute(httpRequest);
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
InputStream instream = bufHttpEntity.getContent();
Bitmap bm = BitmapFactory.decodeStream(instream);
return bm;
} catch (ClientProtocolException e) {
e.printStackTrace();
Log.v("CHECK", "failed! "+src);
return null;
} catch (IOException e) {
e.printStackTrace();
Log.v("CHECK", "failed! "+src);
return null;
}
Xperia だけで開発していたら気づけなかったな・・・。
▽画像付き ListView で特定の画像だけダウンロードできない問題 のキーワード
▽次の記事、前の記事
1つのアプリでMapViewを2つ使ってはダメ? | DB への INSERT 処理の高速化
▽画像付き ListView で特定の画像だけダウンロードできない問題 にトラックバックする
画像付き ListView で特定の画像だけダウンロードできない問題のトラックバックURL:
http://chu3.xsrv.jp/mt5/mt-tb.cgi/1118
今日のキーワード
当サイトのRSS
カテゴリー
スポンサード リンク
新着記事
月別アーカイブ
オススメ書籍
【中級者必携の3冊】
目的から実現方法を探すいわゆる逆引き本。ネットで探してた情報が1冊にまとまっている感じです。
こちらも逆引き本。しかも情報量が多くて分厚い辞書的な1冊。必ず手元に置いておきたい1冊です。
様々なUIテクニックが載っている1冊。レイアウト関係でここまで詳しい本は他にありません。UIに強くなりたいなら必須。
Copyright (C) 2012 All Rights Reserved Android アプリ の 研究所 アンドロイド ナビ