일상&개발 로그

AsyncTask 특징 본문

개발/안드로이드 개발

AsyncTask 특징

dskim98 2017. 4. 24. 18:56

# AsyncTask와 Thread-Handler 중 선택 시 참고하려고 포스팅


1. AsyncTask의 단점

     Memory leak 발생 가능

       AsyncTask를 execute한 Activity가 destroy되는 경우 메모리 릭 발생

       발생하지 않게 하려면 cancel을 해줘야 함(cancel하지 않을 경우 onPostExecute, cancel할 경우 onCanceled를 탐)


    디바이스의 화면회전

       화면 회전 시 Activity를 destroy시키고 다시 생성하기 때문에 AsyncTask를 수행 후 화면 회전 시

       destroy된 Activity의 UI변경을 시도, IllegalArgumentException발생

       또한 이미 destroy된 Activity를 참조하기 때문에 메모리 릭이 발생할 수 있음


2. AsyncTask의 특징

     병행실행

       execute 중복 실행 시 하나의 Thread에서 실행되기 때문에 순차적으로 실행 됨

       병행실행을 위해서는 execute가 아닌 executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)로 실행


     AsyncTask 파라미터

       A의 경우 doInBackground의 파라미터,

       B의 경우 onProgressUpdate의 파라미터,

       C의 경우 onPostExecute의 파라미터이다.

       C의 경우 doInBackground의 return값이고, B의 경우 doInBackground에서 호출하는 publishProgress의 파라미터 값이다.


     작업 중 취소 처리

       AsyncTask객체의 cancel() 호출 후 doInBackground에서 isCanceled();로 cancel여부 확인

       AsyncTask객체의 cancel(true) 호출 후 Thread.currentThread.isInterrupted()로 interrupt여부 확인



     Threading rule

       AsyncTask는 반드시 MainThread에서 실행되어야 함

       AsyncTask객체에서 실행은 한 번만 가능함. 중복 호출 시 Exception 발생





원본 포스팅

http://webnautes.tistory.com/1082
Comments