2010-05-08 7 views
3

3 개의 파일을 다운로드 할 수있는 AsyncTask 인스턴스가 동시에 3 개 있습니다. 두 개의 특정 항목이 끝나면 onPostExecute()의 각 부분에서 플래그를 확인하고 두 항목이 모두 참이면 다음 활동으로 startActivity()이라고 부릅니다.동일한 작업을 두 번 호출 ... 여러 AsyncTask 문제?

현재 두 번이나이 유형의 동작과 유사한 무언가가 표시됩니다. 화면에서 '왼쪽으로 스 와이프'한 종류의 전환이 다음 활동으로 넘어 가기 때문에 때로는 두 번 작동합니다 (다시 내리면 같은 활동으로 돌아갑니다). 일 경우에만 호출되는 활동의 두 버전이 활동 스택에 놓여 있음이 분명합니다.

동시에 실행되는 onPostExecute()와 동시에 서로 다른 플래그를 동시에 확인할 수 있습니까? 두 프로세스가 병렬로 줄 단위로 실행되어야하기 때문에 이것은 극히 드물 것 같습니다 ...

***** 편집 *** 내가 생각했던 것에서 벗어 났으므로이 질문에서 많이 삭제되었습니다. 틀 렸습니다. 그럼에도 불구하고 여기서 유용한 답변을 찾았으므로 유용한 부분을 반영하도록 질문을 편집했습니다. 모두 AsyncTasks ' onPostExecute()가 SO 동시에 그들은 내가 을 설정하기 때문에 사실상, 에서 같은 시간을 같은 라인을 실행하고 있다고 실행하면 나는이 가능하다는 것을 찾을 수 있습니다

답변

1

유일한 방법은 'itemXdownloaded'플래그를 true로 올바르게 설정하십시오. 둘 다 확인한 후 startActivity()를 호출하십시오.

두 응용 프로그램 스레드에서 모두 호출되기 때문에 실제로는 이상한 작업을 수행하지 않는 한 가능하지 않습니다.

증상을 잘못 읽지 않도록하기 위해 몇 가지 Log 호출을 소개합니다.

이외의 다른 downloadID 값이 표시되지 않는 한 의사 코드에서 문제를보기가 어렵습니다. 예를 들어 DL4이 있고 DL1DL2 이후에 완료된 DL4 인 경우 DL4이 작업을 트리거합니다.

+0

아, 바로 주요 응용 프로그램 스레드입니다. 생각하지 않았어. 그러므로 어딘가에 논리적 인 문제가되어야합니다 ... 고마워요. – stormin986

관련 문제