- [수정] : 2019년도 기준 Deprecated 된 기능이다...
강의에서 듣기는 해서 정리 중인데 간단히 정리하고 넘어가자...
Async 개념에 대한 자세한 내용은 아래 링크 참고
Async/Sync 설명 참고
안드로이드에서의 비동기(Asynchronous) 방식을 구현하기 위해 사용하는 AsyncTask에 대한 내용을 알아보자.
안드로이드 스튜디오에서는 AsyncTask라는 클래스를 제공한다.
AsyncTask는 메인 스레드와 별개로 비동기 작업을 간단하게 처리할 수 있도록 도와준다.
주로 UI 업데이트나 백그라운드 작업과 관련된 비동기 작업을 처리하는 데 사용된다.
주로 네 가지 메서드를 오버라이드하여 사용한다. (생명 주기라고 봐도 무관하다.)
- onPreExecute() : 가장 먼저 실행되며, thread가 출발하기 전에 해야할 작업을 수행한다.
일반적으로, 해당 함수에서 사용자 UI에 ProgressBar을 구현한다.- doInBackground() : thread가 할 작업을 수행한다.
- onProgressUpdate() : 이 메소드에 포함된 코드는 Background thread 상에서 처리되며 이곳에서 UI 처리를 하면 안된다.
일반적으로 작업 진행 정도를 표시하는 용도로 사용됩니다.
중간 중간 게속 MainThread로 넘어온다.- onPostExecute() : 작업을 모두 마치면 Main Thread로 돌아온다.
=> 보통 백그라운드 스레드의 처리 진행상황을 보여주기 위해 onProgressUpdate 메소드가 사용되며, 백그라운드 스레드의 처리 결과를 한번에 받기 위해서 onPostExecute 메소드가 사용된다.
public abstract class AsyncTask<Params, Progress, Result> {
...
}
Params, Progress, Result 3가지 파라미터가 쓰인다.
각각 doInBackground, onProgressUpdate, onPostExecute에 전달되는 파라미터이다.
- params : AsyncTask 실행에 필요한 파라미터
- Progress : 현재 작업 진행 정보를 나타내는 상태 값
- Result : 작업의 실행이 완료된 후의 최종 결과
각각 3가지 파라미터의 제네릭 타입을 적어주어야 한다.
여타 이유로 AsyncTask는 사장되고, 현재는 RxJava, Coroutine 기술 등이 활용되고 있다.
글 잘 봤습니다, 많은 도움이 되었습니다.