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

asyctask 비동기 수신 관련 질문입니다.

0 추천
안녕하세요 비동기 수신 관련하여 질문드립니다.

 

AsyncTasker asyncTasker = new AsyncTasker();

asyncTasker.execute();

위 와같이 명령 실행할때 싱글 스레드 기반으로 순차적으로 요청 수신을 하여 잘받는데

 

asyncTasker.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

이렇게 하면 멀티로 데이터 전송 및 수신은 되나 3개정도를 보냈을때 위의 3개가 모두 수신완료 되었는지 확인을 어떻게 해야하나요?

 

비동기 처리 관련해서 도움주시면 감사하겠습니다.
익명사용자 님이 2017년 6월 16일 질문
각요청에따라 응답코드를 부여하여 구분하면 될것같습니다

1개의 답변

0 추천
 
채택된 답변
AsyncTask를 병렬로 실행시켰다면, 각각 별도의 thread로 수행되므로, 모든 thread가 완료된 것을 확인하고 싶다면
thread 동기화 로직을 적용시켜야 합니다. (완료된 signal을 받는 thread를 포함하여...)

thread 동기화 하는 방법은 여러가지 방법이 있습니다만, 언급해주신 상황을 참고하여 예를 들자면
AsyncTasker 안에 모든 thread에서 접근 가능한 static member를 하나 만들고

public static int sGoal;

sGol = 3;

task1.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
task2.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
task3.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

task가 완료될때마다 1씩 줄여서 0이 될때, 어디론가 알려줄 수 있겠습니다.

알려줄때는 broadcast나, synchronized object, Object.wait(), Mutex등등
이것 또한 다양한 방법이 있습니다.
디자이너정 (42,810 포인트) 님이 2017년 6월 17일 답변
...