インターネット経由で画像をダウンロードし、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 アプリ の 研究所 アンドロイド ナビ