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

AsyncTask excute() 이후 라인코드 관련 문의

0 추천

안녕하세요 AyncTask 구현하다가 혹시 다른 방법이 있을가 해서 문의 올립니다.

다음과 같은 코드가 있을때

public boolean setState() {

      new AsyncTaskClass.execute(100);

      return false;    <-- excute안에 내용이 실행 되기도 전에 바로 호출 되서 문제 ㅠ

}

excute실행 이후에 AyncTask로 구현된 클래스에서 onPreExecute -> doinbackground -> onPostExecute

이런식으로 진행을 할텐데 onPreExecute에서는 ProgressDialog를 생성해서 돌아가는 화면을 만들고

doinbackground에서는 백그라운드로 작업할 내용을 코딩하고 onPostExecute에서는 ProgressDialog해제 등 작업을

해주고 있습니다.(혹시 Progress Dialog생성시 다른 코드 진입 안되게 하는 옵션이라던지)

 

여기서 문제가 AsyncTask.excute() 한 이후의 다음코드가 (위에서는 return false) 바로 실행이 되어서 문제를 격고 있습니다.

구현할시에는 AsyncTask안에 있는 부분이 전부 진행이 완료후에 excute() 다음코드로 진입하는 줄 알았는데

로그를 찍어보니 바로 다음코드들이 실행이 되어서 문제가 되는데요

excute()다음코드가 한줄 정도면 어떻게 처리를 해보겠는데, 기존 코드가 뒤에 너무 많이 있어서요

혹시 이런 문제를 해결할 수 있는 방법이 있을까요?? 도움좀 부탁 드립니다.ㅠㅠㅠ 

뱀휅휅 (1,170 포인트) 님이 2014년 7월 15일 질문

1개의 답변

0 추천
안녕하세요.

new AsyncTask.execute()가 호출 되는 즉시

그 클래스안의 코드 (preExe, doInBackGround, postExe) 들은 새로운 Thread에서 실행이 됩니다.

따라서 setState()가 불리는 Thread에서는 바로 다음 코드가 실행이 되는 거지요.

 

setState()가 AsyncTask의 결과에 따라서 다르게 return해야한다면, 다른 디자인을 고려해 봐야할 것 같네요.

Handler / Messenger 한번 찾아보세요
fanoyong (1,440 포인트) 님이 2014년 7월 16일 답변
...