우리가 Android 상에서 Thread 작업을 쉽게 할 수 있도록 class 되어 있는 아주 유용한 녀석이 있음.
AsyncTask 란 녀석인데 상속받아서 class를 작성하면 손쉽게 뼈대들을 만들어주고 내가 크게 관리할 필요 없이,
UI thread 쪽으로 메세지를 날려주는 아주 좋은 녀석이다.

그리고 class를 실행 시키는 방법이 2가지가 있는데 excute(...) 하고  executeOnExecutor(Executor, ...)  이다.
허니콤 이상 버전 부터는 excute로 동작하는 모든 AsyscTask 는 single thread로 동작한다.
즉 AsyncTask라고 여러개 선언하고 동작 시켜봤자 하나 끝나야 다른게 수행되는 그런 구조다.

반면 executeOnExecutor 는 원래 우리가 예상하고 기대했던 방식대로 동작한다.

여기까진 뭐 그냥 그렇거니 했는데 한 4달전에 개발 했던 application 에서 독특한 문제를 발견 했다.
AsyncTask 원본 class에 가면 이녀석을 생성 할 수 있는 max 값이 정해져 있다.

나는 6개를 생성했었는데 7번째 부터는 동작 자체를 안하는 버그가 있는 것이었다.
그래서 뒤져보니 저게 떡~ 하니 리미트가... 후...
그래서 나는 추천한다 정말 다양한 멀티 쓰레드가 필요하면 그냥 Thread class를 쓰고 UI 동작은 Handler로 처리하라고,
어차피 내부적으로 AsyncTask도 동일하게 동작한다.
Thread 동작을 수행하고 내부적으로 Handler 객체에 post 하는 방식을 취하고 있는 거니까....
 

'Android' 카테고리의 다른 글

Android QR code scan 부분  (0) 2014.09.21
Android QR code  (0) 2014.08.12
Android Custom Widget 만들기 7편  (0) 2012.04.12
Android Custom Widget 만들기 6편  (0) 2012.04.12
Android Custom Widget 만들기 5편  (0) 2012.04.12

+ Recent posts