안드로이드 개발 질문/답변
(글 수 45,052)
AsyncTask를 통하여 웹에서 자료를 가져오는 동안
progressdialog를 띄우려고 합니다.
AsyncTask에서 반환값을 받기 위해 get()메소드를 쓸려면
try/catch로 묶어야 하는데 이렇게 되면 progressdialog가 제대로 작동을 안하더군요.
try/catch가 없으면 잘 작동합니다.
원래 순서가
preexcute에서 showdialog
doinbackground 에서 웹 접속
postexcute에서 dismissdialog
인데
웹접속 - showdialog - dismissdialog이런 순서로 작동을 하게 되더군요
이거 제대로 돌아게게 해결할수 있는 방법이 없을까요 ㅠㅠ?




큰 문제 없는거 아닌가요? 순서 자체는 당연하다고 보이구요....
순서가 당연한 이유를 설명드리면 아마 저 AsyncTask를 OnCreate 에서 실행하셨을건데
onCreate에서는 아직 Activity의 UI 변화를 줄수 없는 상태입니다.
다만 UI를 건드리면 작업이 대기하고 있는 상태라고 보시면 됩니다.
하지만 background thread에서 동작하는 웹은 바로 동작할 수 있죠...
그래서 먼저 웹접속이 되는겁니다.
그리고 크게 관계없다고 보는 이유는
우선 웹접속이 너무 빨리 끝난다 하더라도 깜빡하면서 dialog가 지나갈 뿐입니다.
크게 문제 될게 없습니다. 이걸 고객이 싫어한다면 좀 머리아픕니다.
하지만 설득은 가능합니다. 너무 오래걸릴 가능성이 있기 때문에 띄운거다... 라면 됩니다.
웹 접속이 길게 가면 아마 프로그레스가 정상적으로 뜨고, 웹 접속이 끝나면 프로그레스가 사라질겁니다.
웹접속이 길게 가도 프로그레스가 웹접속 이후에 실행된다면 이는 코드를 잘못작성하신 것으로 판단됩니다.