CODEDRAGON ㆍDevelopment/Android
AsyncTask 클래스
· Thread의 경우 UI를 관리하는 MainTread외에 Background Thread에서 MainThread의 UI를 접근하려면 Handler를 사용 했습니다. (새로운 Thread 생성 후 Handler 객체를 통해 통신)
· 안드로이드에서는 쓰레드의 여러 가지 작업을 AsyncTask 객체 하나로 만들어 사용하기 쉽게 만들어 놓았습니다.
· Thread를 좀더 쉽게 사용하기 위해 만들어놓은 클래스여서 Thread와 Handler의 기능들이 콜백 메서드로 모두 존재합니다.
· 비동기 AsyncTask클래스로 스레드를 생성하면 간편하게 스레드를 사용할 수 있습니다.
· 하나의 클래스에서 UI 작업을 쉽게 할 수 있게 해주는 클래스
· AsyncTask 내부에는 자체 ThreadPool 이 있어 Thread 가 무한정 늘어나도 메모리에 부담을 주지 않도록 관리하고 있기 때문에 따로 ThreadPool 을 관리하지 않는다면 AsyncTask 를 사용하는 것도 좋은 방법입니다.
· 자바에서는 비동기 처리를 하기 위해 별도의 Thread 를 생성하여 public void run() 메소드를 재정의해서 구현하면 되지만 안드로이드에서는 직접 Thread 를 생성하기 보다는 AsyncTask 를 사용하도록 권장하고 있습니다.
public abstract class AsyncTask
http://developer.android.com/intl/ko/reference/android/os/AsyncTask.html
AsyncTask Generic 타입
android.os.AsyncTask<Params, Progress, Result> |
인자 |
설명 |
Params |
· doInBackground() 파라미터 타입 · execute() 메소드 인자 값이 됩니다. |
Progress |
· doInBackground() 작업 시 진행 단위의 타입 · onProgressUpdate 파라미터 타입입니다. |
Result |
· doInBackground() 리턴값 · onPostExecute() 파라미터 타입입니다. |
AsyncTask 장점과 단점
장점 |
· AsyncTask는 비교적 오래 걸리지 않은 작업에 유용 · Task 취소가 용이 · 로직과 UI 조작이 동시에 일어나야 할 때 매우 유용하게 사용 |
단점 |
· 하나의 객체이므로 재사용이 불가능합니다. (객체를 새롭게 생성하면 되지만 메모리 효율이 떨어집니다.) · 구현한 액티비티 종료 시 별도의 지시가 없다면 종료되지 않습니다. · Activity 종료 후 재시작 시 AsyncTask의 Reference는 invalid 상태가 되며 onPostExecute() 메소드는 새로운 Activity에 어떠한 영향도 주지 못합니다. · AsyncTask의 기본 처리 작업 개수는 1개입니다. |
'Development > Android' 카테고리의 다른 글
Activity생명주기를 통한 Data 처리 도식도 (0) | 2017.01.25 |
---|---|
파일과 디렉토리 관련 주요 메서드 (0) | 2017.01.25 |
좌표를 통한 터치 방향 판별 (0) | 2017.01.19 |
안드로이드 시스템에서 제공하는 기본 레이아웃 - simple_list_item_1, simple_list_item_2, simple_list_item_checked, simple_list_item_single_choice, simple_list_item_multiple_choice (0) | 2017.01.18 |
어댑터뷰(AdapterView), 어댑터뷰(AdapterView) 계층도, 어댑터뷰 패턴 도식도 (0) | 2017.01.18 |