프로그래밍언어/Android

Android Threading에 관한 정리

유선생님의 코딩 교실 2021. 2. 7. 16:39

1. AsyncTask

  • 특징:
    • 백그라운드 작업과 UI 업데이트를 쉽게 처리할 수 있도록 설계된 클래스.
    • doInBackground()에서 백그라운드 작업 수행, onPostExecute()에서 UI 업데이트 가능.
  • 장점:
    • 간단한 구현으로 비동기 작업 처리 가능.
    • UI 스레드와의 통신이 용이.
  • 단점:
    • 제한된 스레드 풀 사용.
    • 메모리 누수 가능성.
    • Android 11(API 30)에서 Deprecated.

2. HandlerThread

 

  • 특징:
    • Looper가 포함된 스레드. 메시지 큐와 핸들러를 통해 작업을 처리.
    • 장시간 실행되는 백그라운드 작업에 적합.
  • 사용법:
    • HandlerThread를 생성 후 시작.
    • Looper를 얻어 Handler와 연결하여 메시지 전달.
  • 장점:
    • 특정 작업을 순차적으로 처리.
    • 적은 리소스를 사용.
  • 단점:
    • 단일 스레드에서만 작업 가능.

 

3. ThreadPoolExecutor

 

  • 특징:
    • 풀에 스레드를 미리 생성하고 관리하는 고급 스레드 관리 도구.
    • 여러 작업을 병렬로 처리 가능.
  • 구성 요소:
    • 핵심 스레드 개수, 최대 스레드 개수, 작업 대기 큐, 스레드 팩토리.
  • 장점:
    • 동시 작업 처리 효율성 증가.
    • 작업이 많아도 적절히 분배 가능.
  • 단점:
    • 초기 설정 복잡.
    • 리소스 관리 필요.

 

4. Intent Service

 

  • 특징:
    • 네트워크 요청과 같은 장시간 실행 작업을 처리하기 위한 서비스.
    • IntentService(deprecated)나 WorkManager로 대체 가능.
  • 사용법:
    • Service 또는 IntentService를 상속하여 구현.
    • 백그라운드에서 지속적으로 실행되며 네트워크 작업 수행.
  • 장점:
    • 앱이 포그라운드에 없어도 실행 가능.
    • 백그라운드 작업에 최적화.
  • 단점:
    • 기본적으로 UI 스레드와 별도 스레드에서 실행되지 않으므로, 스레드를 명시적으로 관리해야 함.