안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
서버단의 XML을 파싱하여 이미지 경로와 데이터를 가져와서 리스트 뷰에 뿌려주는방식을 사용하고 있습니다.
Image 경로를 어뎁터로 만드는 과정에서 속도가 너무 느립니다.
관련 질문을 올려보았는데, 다른 개발자 분들이 답변을 달아주신 내용중
서버단의 XML을 파싱하여 이미지 경로와 데이터를 가져와서 리스트 뷰에 뿌려주는방식을 사용하고 있습니다.
Image 경로를 어뎁터로 만드는 과정에서 속도가 너무 느립니다.
관련 질문을 올려보았는데, 다른 개발자 분들이 답변을 달아주신 내용중
2011.04.08 15:47:02
혹시 getView 에서 URL 의 이미지를 가져오는 것을 수행하셨는지요..
그거 굉장히 안 좋습니다..
getView 는 화면에 보이지 않았다가 보여지게 되면 반복적으로 수행하게 되고
따라서 스크롤 할때 사라졌다 보여지게 되는 리스트 아이템들은 모두 다시 getView 를 수행하게 되어있습니다.
따라서 getView에서 URL 의 이미지를 가져오는것을 하지말고
별도로 URL 의 이미지를 저장하는 배열을 만들어서 가져오도록 하십시요
그거 굉장히 안 좋습니다..
getView 는 화면에 보이지 않았다가 보여지게 되면 반복적으로 수행하게 되고
따라서 스크롤 할때 사라졌다 보여지게 되는 리스트 아이템들은 모두 다시 getView 를 수행하게 되어있습니다.
따라서 getView에서 URL 의 이미지를 가져오는것을 하지말고
별도로 URL 의 이미지를 저장하는 배열을 만들어서 가져오도록 하십시요
2011.04.08 15:52:16
이미지 경로를 어뎁터로 만드는 과정 이란게 정확히 어떤걸 말씀하시는 건지는 모르겠지만
화면에 보여질 때마다 웹에서 이미지를 로드해와서 뿌리는 거라면 당연히 느릴 수 밖에 없습니다.
이미 파일로 저장된 이미지를 BitmapFactory.decodeFile 이용해서 가져오는 것도 상당한 시간이 걸리는데
실시간으로 웹에서 가져온다면 더더욱 오래 걸리겠죠.
여기 한번 참고해 보시기 바랍니다.
AsyncTask를 이용한 방식인데
일단 임시 이미지를 보여주고 이미지 다운이 완료 되면 다운된 이미지로 교체합니다.
한번 다운된 이미지는 캐쉬에 저장해놓고 다음부터는 캐쉬에서 불러오는 구조로 되어 있구요.
원하시는게 이게 맞을지 모르겠네요...
2011.04.08 16:27:58
번역이 힘드시면
검색 사이트에서 ' Multithreading For Performance ' 로 검색하시면
해당 포스트를 번역 해주신 분의 블로그가 있습니다.
이 포스트는 정말 몇번을 읽어도 훌륭한 글 같다는;;




소스를 다보진 않았지만 대충보니 제가 비슷한 이유로 애먹은 기억이 있네요.
제기억엔 이 소스에서 캐시 부분이 제대로 작동을 안한것 같아요. 그래서 캐시를 따로 써서 해결했거든요.
이유는 잘 모르겠습니다. 분석할 만큼 시간적 여유가 있지 않았기 때문에..ㅎㅎㅎ
결론은, 캐시만 해결하면 괜찮을거에요.
이렇게 두가지 답변을 주셨습니다.
해당 사항을 인터넷에 찾아바도 어떻게 해야하는지 도저히 감이 오질 않습니다.
참고 할만한 예시나 좋은 소스 없을까요..... 일주일째 찾아보고 알아바도 도저히 답이 안나옵니다.
좋은하루 되시구요, 답변 부탁 드리겠습니다.
감사합니다.