안드로이드 개발 질문/답변
(글 수 45,052)
스레드로 웹에서 이미지를 1초마다 다운로드
받아 이미지뷰에 계속 에니메이션 처럼 뿌려주는 것입니다.
1초마다 실행되는 스레드에서 Http 요청이 렉이 걸리면 렉이 풀려도
왜 다시 요청을 하지 않고 멈춰버릴까요
스레드 어떤 특성때문에 그런가요?
이런식으로 구현했는데 해결방법에 대한
조언 부탁드립니다.
2010.08.14 12:55:33
타이머 타스크가 종료 되지 않으면 1초가 지났더라도 타스크 종료 되기전에는 다시 수행되지 않습니다.
또는 타스크내에서 익셉션이 발생하면 더이상 타이머가 진행되지 않습니다.
예상가능한 원인은 서버 요청 대기 상태가 지속중이거나 요청 타임아웃 익셉션이 발생해서 타스크가 종료 되었거나 입니다.
1초 단위로 재시도 하길 원하신다면, HttpURLConnection에 요청 타임아웃을 짧게 주어 서버 랙이 발생하더라도 타스크가 오래 블럭되지 않도록 하고, 발생하는 타임아웃 익셉션을 캐치하여 로그만 남기고 작업을 정상 종료하도록 하여 타이머가 다시 재요청 하도록 유도하는것입니다.
또는 타스크내에서 익셉션이 발생하면 더이상 타이머가 진행되지 않습니다.
예상가능한 원인은 서버 요청 대기 상태가 지속중이거나 요청 타임아웃 익셉션이 발생해서 타스크가 종료 되었거나 입니다.
1초 단위로 재시도 하길 원하신다면, HttpURLConnection에 요청 타임아웃을 짧게 주어 서버 랙이 발생하더라도 타스크가 오래 블럭되지 않도록 하고, 발생하는 타임아웃 익셉션을 캐치하여 로그만 남기고 작업을 정상 종료하도록 하여 타이머가 다시 재요청 하도록 유도하는것입니다.
UI처리의 경우는 asyncTask나 runnOnUiThread로 구현해야 백그라운드 작업과 UI작업이 동시에 잘 돌아갑니다.