마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

AsyncTask 인터넷 상의 이미지 병렬처리 질문..

0 추천
트위터 앱을 만들고 있습니다.

타임라인을 불러올 떄 네트워크상에서 이미지와 글을 혼합하여 를 받아와 뿌려주게 되는데요

Twitter4J를 이용하여 글 하나당 하나씩 불러오고 있습니다.

문제는 이렇게 하니까 시간이 너무 오래 걸립니다.

(NetworkOnMainThread Exception 때문에 AsyncTask.get()을 사용중인데 이 떄문에 작업이 끝날 떄 까지 지연되는 문제라고 생각됩니다.)

트위터 공앱같이 하려면 단순히 글 먼저 다 불러오고 이미지는 모아서 뒤에 따로 불러주면서 캐싱하는 건가요?

인터넷에서 찾아보니 단순히 AsyncTask는 사실상 직렬처리라고 하더군요...

그래서 executeOnExecutor를 써야한다는데 이러면 안드 API 11이하에서는 쓰지를 못한다고 하니 이건 피하려고 합니다.

(사실 해봤지만 효과가 별로 없었습니다)
erischan (230 포인트) 님이 2013년 8월 24일 질문

1개의 답변

0 추천
 
채택된 답변

생각하신게 맞습니다..

텍스트등을 먼저 다 불러오고 이미지같은경우에는 해당 이미지의 URL 을 가지고 있으시면됩니다.

그리고 보여줄때는 이미지를 별도의 스레드를 돌려서 보여주게됩니다..

이부분은 이미지로더라는것을 찾아보시면 아실것이고.. 여기서 한발더 나아가서 캐쉬를 해주셔야(디스크캐쉬든 메모레캐쉬든) 다음번에 호출할때 또 인터넷연결로 이미지를 불러오지 않고 빠르게 불러올수 있습니다.

대표적으로 잘나가는 라이브러리로는

https://github.com/nostra13/Android-Universal-Image-Loader

이거나 최근 핫하게 뜨고있는 구글의 volley 를 쓰시면 고민하던부분이 해결되실겁니다

http://hanburn.tistory.com/135

건방진프로그래머 (26,630 포인트) 님이 2013년 8월 24일 답변
erischan님이 2013년 8월 24일 채택됨
감사합니다~ Volley 한번 써봐야겠네요
...