[안드로이드 공부]/동기화

스레드(Thread) 대신 AsyncTask(비동기 태스크)를 쓰자!

코코모아 2015. 8. 29. 14:15

아래는 코모스튜디오가 직접 만든 무료 앱이에요
(한 번만 봐주세요 ^^)

01

02

03

정각알림 만들기(말하는시계)

말하는 시계 (취침, 자전거) 

말하는 타이머 음성 스톱워치 

UI 가 있는 곳에서 스레드 작업을 조금 길게 하면 화면에 버벅거리면서 아예 멈추는 경우도 발생한다. 하지만 스레드 대신 AsyncTask를 사용하면 이런 현상을 말끔히 해결해준다.



호출은 

MainToXXXAsyncTask mainToXXXAsyncTask = new MainToXXXAsyncTask();
if(mainToXXXAsyncTask != null) {
mainToXXXAsyncTask.execute();
}


이렇게 하면 되나, 두 개이상의 태스크를 사용할 경우는 아래 처럼 호출해줘야 한다. 그렇지 않으면 모든 비동기 태스크(AsyncTask)가 동작하지 않는다. 즉, 첫 번째 비동기 태스크의 doInBackground코드가 작동하지 않으면서 뒤로 이어지는 태스크들이 먹통이 된다. 아래 코드는 첫 번째 태스크의 onPostExecute()에서 해주면 된다.


MainToXXXAsyncTask mainToXXXAsyncTask = new MainToXXXAsyncTask();
if(mainToXXXAsyncTask != null) {
mainToXXXAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}


잡아놓고 쓰기 좋아하는 스레드는 최대한 쓰지 않도록 하자.


모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다.
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요.