본문 바로가기

안드로이드

[안드로이드] asynctask의 이해

배경지식

Thread

  Thread는 동시 작업에 필요한 작업 단위(흐름)이다. 안드로이드의 경우 어플리케이션을 실행하면 main thread(UI thread)가 실행된다. Main thread에서만 UI 변경 작업이 가능하고 사용자가 직접 만든 thread에서는 UI 부분에 접근이 불가능하다.

 

Handler

  Handler는 서로 다른 thread간의 통신을 위한 객체라고 볼 수 있다. Handler는 thread 안에서 정의가 가능하고 위 처럼 사용자가 만든 thread는 UI에 접근이 불가능하다. 하지만 사용자가 정의한 thread 내부의 handler를 통해서 UI 변경 작업이 가능해진다.

 


Asynctask

  Asynctask는 비동기 태스크이다. Thread와 handler를 이용하여 background 작업을 진행하는 대신 asynctask를 이용하면 간편하게 코딩할 수 있다.

Asynctask = Thread + Handler

 

Asynctask의 메서드

  • excute() : asynctask를 상속한 객체를 실행시켜 백그라운드 작업이 수행된다.
  • doInBackground() : 새로 만들어진 쓰레드로 백그라운드 작업을 할 수 있다. publishProgress()를 호출할 경우에만 메인 쓰레드에서 UI 작업이 가능하다.
  • onPreExcute(), onProgressUpdate(), onPostExcute() : 메인 스레드에서 실행되므로 UI 작업이 가능하다. 각각 백그라운드 작업을 수행 전, 수행 진행 중, 수행 후를 의미한다.

 

출처 : Android Java Point