프로그래밍언어/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 스레드와 별도 스레드에서 실행되지 않으므로, 스레드를 명시적으로 관리해야 함.