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

Thread 질문입니다.

0 추천
10개의 다른 조건으로 for문을 돌립니다.

for(10번){

      switch(i){

       case 0:

                    1번조건

                    break;

        case 1:

                     2번조건

                     break;

                        .......}

             new Async().execute();

}

이렇게 돌아갈경우 .. 문제가 생깁니다. break 밖에 뭔가 대기 시켜줘야 할게 필요한거 같기도 한데..

도통 감이 안잡히네요...

Async 안에 doInBackground 에서는 파싱을 해오고 있습니다. 파싱 작업은 10초정도 걸리고

그게 끝나면 UI 쪽에서 작업을 시작합니다. 그런데 for 문 돌릴때 기다려 주지 않으니.. 문제가 발생 하는것 같은데

.. 제가 이렇게 추측뿐인것이지 이게 맞다 라고도 말씀 못드리겠네요...

for문이 아닌 한번만 돌릴땐 정상적으로 돌아 가거든요 ...
숀화이트 (3,310 포인트) 님이 2014년 7월 30일 질문
잘 이해가 되지 않습니다...어떤게 문제인것인지...

위의 코드는 for문이 10번 마치고 난 다음에 Async의 백그라운드함수가 실행됩니다.

혹시 첫번째 Async의 백그라운드가 실행이 되고 그 다음에 두번째 for 문이 돌기를 원하시는건지요?

그렇다면 답변을 달아주신 분 말씀대로 하나의 async 만 만들고 해당 백그라운드에서 for 문을 돌려 주시면 됩니다.
답변 감사합니다 ㅎㅎ 해결은 되었습니다 ^^ for문 안에 Async 가 들어가있게 코드 해놨는데 ㅎㅎ 잘못보셧나봅니다

1개의 답변

+1 추천
 
채택된 답변
for문을 Async의 doInBackground 안으로 옮겨보세요.

현재 구조에서는 for 문이 (10초 * 10회 = )100초 동안 저기서 빠져나가질 못하는것 같네요

로그를 박으시면 실행된 순서를 명확히 알 수 있을거에요
Gioskhan (12,060 포인트) 님이 2014년 7월 30일 답변
숀화이트님이 2014년 7월 30일 채택됨
멍청한짓 하고 있었네요 . 감사합니다 . 질문 한가지 더요!
그럼 for 문이 한번 끝나고 ui 쪽에서 작업을 한번씩 해주고 싶을땐
어떻게 해야될까요 . doInBackground 안에서는 for문이 10번이 다 끝까기 전에 onPostExecute 로 나오지 않으니 .. for문이 한번 끝날때마다 UI 쪽으로 하나씩 보내주고 싶은데 어떤 방법이 있을까요 ?!
억지로 그렇게 하시려면 아이디어를 고민해보세요..
꼭 그렇게 해야한다면 저같으면 멤버 변수 하나 두고,
for문에서 1회 끝날 때 그 값을 바꾸고 다음 문 실행 때 그 값이 다시 원래대로 안바뀌면 대기하도록 바꿀거같네요.
물론 Async 쪽에서는 일이 끝날 때 멤버 변수를 원래대로 값을 바꿔줘야겠죠?
...