안드로이드 개발 질문/답변
(글 수 45,052)
리스트 이미지를 웹에서 불러와 표시하고 있습니다.
여러개의 이미지를 불러오는 중 실패하는 경우가 계속발생하고 있습니다.
원인 중 하나는 소켓 타임아웃이고, 또 다른 원인은 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) {}