[Android Studio] Android AsyncTask

김진호·2023년 7월 17일
0

Android

목록 보기
3/5

- [수정] : 2019년도 기준 Deprecated 된 기능이다...
강의에서 듣기는 해서 정리 중인데 간단히 정리하고 넘어가자...

현재는 RxJava, Coroutine 기술 등이 활용되고 있다.


0. Async 방식

Async 개념에 대한 자세한 내용은 아래 링크 참고
Async/Sync 설명 참고

1. AsyncTask.

안드로이드에서의 비동기(Asynchronous) 방식을 구현하기 위해 사용하는 AsyncTask에 대한 내용을 알아보자.

안드로이드 스튜디오에서는 AsyncTask라는 클래스를 제공한다.
AsyncTask는 메인 스레드와 별개로 비동기 작업을 간단하게 처리할 수 있도록 도와준다.
주로 UI 업데이트나 백그라운드 작업과 관련된 비동기 작업을 처리하는 데 사용된다.


2. AsyncTask.의 재정 메서드

주로 네 가지 메서드를 오버라이드하여 사용한다. (생명 주기라고 봐도 무관하다.)

  • onPreExecute() : 가장 먼저 실행되며, thread가 출발하기 전에 해야할 작업을 수행한다.
    일반적으로, 해당 함수에서 사용자 UI에 ProgressBar을 구현한다.
  • doInBackground() : thread가 할 작업을 수행한다.
  • onProgressUpdate() : 이 메소드에 포함된 코드는 Background thread 상에서 처리되며 이곳에서 UI 처리를 하면 안된다.
    일반적으로 작업 진행 정도를 표시하는 용도로 사용됩니다.
    중간 중간 게속 MainThread로 넘어온다.
  • onPostExecute() : 작업을 모두 마치면 Main Thread로 돌아온다.

=> 보통 백그라운드 스레드의 처리 진행상황을 보여주기 위해 onProgressUpdate 메소드가 사용되며, 백그라운드 스레드의 처리 결과를 한번에 받기 위해서 onPostExecute 메소드가 사용된다.

3. AsyncTask.의 구현

- AsyncTask.의 구조

public abstract class AsyncTask<Params, Progress, Result> {
...
}

Params, Progress, Result 3가지 파라미터가 쓰인다.

각각 doInBackground, onProgressUpdate, onPostExecute에 전달되는 파라미터이다.

  • params : AsyncTask 실행에 필요한 파라미터
  • Progress : 현재 작업 진행 정보를 나타내는 상태 값
  • Result : 작업의 실행이 완료된 후의 최종 결과

- AsyncTask.의 제네릭 타입

각각 3가지 파라미터의 제네릭 타입을 적어주어야 한다.


4. AsyncTask.의 장단점.

1) AsyncTask.의 장점

  • Main Thread를 기다리게 할 필요가 없다.
  • 네트워크 작업에 용이하다.
    (Request하고 Response 하는 과정 사이의 시간을 낭비하지 않을 수 있다.)

2) AsyncTask.의 단점

  • 재사용이 불가능하다.
  • 구현된 Activity가 종료될 경우 함께 자동 종료되지 않는다.
    (따로 onPause 액티비티 생명주기에 정지하는 함수를 써줘야한다.)
  • AsyncTask는 하나만 실행될 수 있다.
    (병렬적으로 두 개의 처리가 불가능하다.)

여타 이유로 AsyncTask는 사장되고, 현재는 RxJava, Coroutine 기술 등이 활용되고 있다.

profile
멋쟁이

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

글 잘 봤습니다, 많은 도움이 되었습니다.

답글 달기