프로그래밍 정리/안드로이드

[Android - 안드로이드] AsyncTask 병렬처리

주누다 2015. 4. 13. 16:53
반응형

AsyncTask 당연히 병렬처리 된다고 생각했는데... 아니었음...


When first introduced, AsyncTasks were executed serially on a single background thread. Starting with DONUT, this was changed to a pool of threads allowing multiple tasks to operate in parallel. After HONEYCOMB, it is planned to change this back to a single thread to avoid common application errors caused by parallel execution. If you truly want parallel execution, you can use the executeOnExecutor(Executor, Params...) version of this method with THREAD_POOL_EXECUTOR; however, see commentary there for warnings on its use. 

=>  해석하면 

- AsyncTask가 처음 도입되었을때는 순차적으로 하나의 백그라운드 쓰레드를 실행 

- DONUT(1.6버전)부터는 여러개의 태스크를 병렬적으로 처리하도록 변경

- 다시 HONEYCOMB(3.0버전)부터는 하나의 쓰레드만 실행하게끔...(한마디 직렬... 순차적...)

- THREAD_POOL_EXECUTOR를 사용 executeOnExecutor(Executor, Params...) 로 쓰레드를 병렬적으로 실행시킬수 있게

 되어 있음...


아아아아아아!!!!!!

ㅠ_ㅠ


참조 블로그 : 

http://trend21c.tistory.com/1715

https://gist.github.com/benelog/5954649



허니컴 버전 이상에서는 AsyncTask.SERIAL_EXECTOR 가 Default

ActivityThread => DefaultExecutor 변경 방법

====================================================================

if (data.appInfo.targetSdkVersion <= android.os.Build.VERSION_CODES.HONEYCOMB_MR1) {

    AsyncTask.setDefaultExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

}

====================================================================


반응형