리스트 이미지를 웹에서 불러와 표시하고 있습니다.

여러개의 이미지를 불러오는 중 실패하는 경우가 계속발생하고 있습니다.

원인 중 하나는 소켓 타임아웃이고, 또 다른 원인은 BitmapDrawable을 생성하는데 실패하는데 원인과 대처방법을 모르겠습니다.

아래의 소스는 이미지를 가져오는 부분입니다.
is.available()의 숫자가 있음에도 불구하고, BitmapDrawable d의 값이 null인 경우가 종종 발생합니다. (10번에 1~2번정도 발생하므로 실제 웹의 이미지 데이터는 문제없습니다.)
TCP 통신은 기본적으로 데이터 에러확인을 하는 것으로 알고 있습니다. 그래서 이미지 데이터가 잘못됬다고 생각안하는데.. 왜 BitmapDrawable을 생성하는데 종종 실패하는지 이해가 안됩니다.

이런 현상이 있을 수 있는건가요? 어떠한 경우에 BitmapDrawable 값을 null을 반환하는건가요?

 try {	InputStream is = null;
	URLConnection conn = new URL(url).openConnection();
	conn.setConnectTimeout(2000);
	conn.setReadTimeout(2000);
	is = conn.getInputStream();
	Log.d("tag", "is: " + is.available());
	BitmapDrawable d = (BitmapDrawable)Drawable.createFromStream(is, "src");
	Log.d("tag", "d: " + (d == null ? "null" : ""));
} catch(Exception e) {}