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

AsyncTask 반복 실행시 어떻게 될까요?

0 추천

AsyncTask는 반복 실행이 안되는데 다음과 같이 반복 실행할 경우
어떻게 될까요? GC가 알아서 종료 및 메모리 정리해 주는 것일까요?
아니면 생성된 갯수만큼 계속 돌까요?

public void mClick(View v) { //버튼 클릭시
     new MyAsyncTask().execute(url);
}

UnlimitedJava (910 포인트) 님이 2013년 7월 10일 질문
UnlimitedJava님이 2013년 7월 10일 수정

1개의 답변

+1 추천

이번기회에 찾아본 결과 AsyncTask 는 OnPostExcute 가 호출 된 이후 GC 에 의해 메모리 정리가 된다고 하는군요.

여기에 덧붙여서 AsyncTask 의 Source 코드 내부를 보면

 

private static final int CORE_POOL_SIZE = 5;
private static final int MAXIMUM_POOL_SIZE = 128;
private static final int KEEP_ALIVE = 1;

public static final Executor THREAD_POOL_EXECUTOR
    = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE,
            TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory);

출처 : Stack overflow

 

위와 같이 128개의 AsyncTask 를 동시적으로 생성할 수 있다고 나와있습니다.

 

coooldh (2,510 포인트) 님이 2013년 7월 10일 답변
coooldh님의 빠른 답변에 감사합니다.
그렇군요. GC가 처리를 해 주는군요.
시점이 onPostExecute() 이군요.
감사합니다.
...