android, AsyncTask

PUBLISHED 2011. 10. 5. 09:15
POSTED IN 공장

안드로이드에서는 뭔가 뒷단에서 작업하기 위해서 여러가지 방법이 있으니 상황에 맞게 골라쓰면 된다.
(1) Thread를 사용하는 방법 (UI에 접근하여 조작할 수 없는 단점)
(2) Handler를 구현하는 방법 (메시지는 하나씩 처리됨)
(3) Thread와 Handler가 짬뽕된 AsyncTask를 구현하는 방법이 있다. (AsyncTask는 생성되어 한번만 실행됨)

AsyncTask는 API Level 3에 포함된 abstract 클래스로 3개의 generic type을 가진다.
public abstract class AsyncTask<Params, Progress, Result> 

android developers의 reference 페이지에 있는 소스를 통해 확인해보자. (원본보기)


AsyncTask의 생김새를 다시한번 관찰하자!
public abstract class AsyncTask<Params, Progress, Result> 
(1) Params : doInBackground 메소드의 파라미터이다.
(2) Progress : onProgressUpdate 메소드의 파라미터이다.
(3) Result : doInBackground의 리턴값이자 onPostExecute의 파라미터이다.

핵심적인 Params와 Result만 본다면
- doInBackground에서 파라미터를 받아 뭔가 열심히 처리하고, 그 결과를 리턴하면
- onPostExecute가 받아서 성공인지 실패인지에 따라 후속처리를 하는 방식으로 동작할 수 있다.

예를들면
- doInBackground에서 로그인 정보를 받아서 시도하고 성공인지 실패인지를 리턴하면
- onPostExecute가 성공이면 다음 activity를 띄우기를 시도하고, 실패하면 이를 알리는 알림창을 띄우는 정도...

필요할때 다음 틀을 가져다 쓰자..

- onPreExecute : doInBackground가 호출되기 이전에 미리 호출되어 필요한 사전작업을 할 수 있도록 해주고
- onCancelled : 작업이 취소됐을때의 뒷정리를 할 수 있도록 해준다.

위의 클래스는 이런식으로 호출될 수 있다.
(new LoginTask(this)).execute(userLoginData);

참고
(1) Android Threads, Handlers and AsyncTask - Tutorial
(2) Android Thread

'공장' 카테고리의 다른 글

android, JSON 사용하기  (0) 2011.10.05
android, Matrix를 이용한 Bitmap 조작하기  (0) 2011.10.04
android, 동적으로 Options Menu 구성하기  (0) 2011.09.30