[Android Studio] Android AsyncTask

2024. 1. 15. 18:28· FrontEnd/Android
목차
  1. 0. Async 방식
  2. 1. AsyncTask.
  3. 2. AsyncTask.의 재정 메서드
  4. 3. AsyncTask.의 구현
  5. 4. AsyncTask.의 장단점
  6. 1) AsyncTask.의 장점
  7. 2) AsyncTask.의 단점
반응형

- [수정] : 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 기술 등이 활용되고 있다.

반응형
저작자표시
  1. 0. Async 방식
  2. 1. AsyncTask.
  3. 2. AsyncTask.의 재정 메서드
  4. 3. AsyncTask.의 구현
  5. 4. AsyncTask.의 장단점
  6. 1) AsyncTask.의 장점
  7. 2) AsyncTask.의 단점
'FrontEnd/Android' 카테고리의 다른 글
  • [Android Studio] Button 아래의 그림자 없애기
  • [Android Studio] Realm
  • [Android Studio] SharedPreferences
dog-pawwer
dog-pawwer
성장 중 🌱🌱
dog-pawwer
지노개발일기
dog-pawwer
전체
오늘
어제
  • 분류 전체보기 (115) N
    • FrontEnd (4)
      • Android (4)
    • BackEnd (20)
    • Cloud (15)
    • Trouble Shooting (1) N
    • Computer Science (53)
      • CS 개인 공부 (20)
      • 알고리즘 (코딩테스트) (1)
      • 프로그래밍언어론 (15)
      • 분산시스템 (5)
      • 정보처리기사 (개인공부용) (3)
    • 강의 (18)
      • 자바-스프링부트-서버개발 (8)
      • UMC (Study) (9)
      • 스프링 부트와 JPA (1)
    • 🚨ERROR (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • GitHub

공지사항

인기 글

태그

  • oauth
  • kakao
  • RestAPI
  • java
  • 카카오 로그인
  • 오어스
  • springboot
  • 스프링부트
  • 카카오
  • 카카오 로그인 구현
  • 9-0

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
dog-pawwer
[Android Studio] Android AsyncTask
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.