AsyncTask vs Thread vs Service 차이

2020. 12. 4. 15:01모바일/Android_Java

Thread

  • 작업을 동시에 실행할 수 있는 클래스이다. Thread 를 상속받거나, Runnable 을 구현하여 사용할 수 있다. 쓰레드는 일반적으로 긴 작업을 수행하는 데 사용한다. 쓰레드는 수동으로 관리해야 하기 때문에 관리가 어렵고 코드를 읽기 어려워 질 수 있다는 단점이 있다.
  • 하나의 독립적인 실행 흐름

사용처

  1. 중간 또는 많은 양의 데이터가 포함 된 네트워크 작업 (업로드 또는 다운로드)
  2. 백그라운드에서 실행해야하는 높은 CPU 작업
  3. GUI 스레드와 관련된 CPU 사용량을 제어하려는 모든 작업

image-20201204150128559

Service

서비스는 백그라운드에서 실행시간이 긴 작업을 수행하며, 사용자 인터페이스를 제공하지 않는 어플리케이션 구성요소이다. UI 가 없는 작업이긴 하지만, 작업시간이 너무 길지 않아야 하며, 긴 작업이 필요하다면 서비스 내에서 스레드를 사용해야 한다.

AsyncTask

비동기 작업을 백그라운드 스레드에서 실행하고 결과가 UI 스레드에 게시되게 하는 데 사용되는 클래스이다. 스레드나 핸들러를 조작하지 않고도 UI 스레드를 적절하고 쉽게 사용할 수 있다. 메인 스레드와 통신해야 하는 작업에 사용하며, 핸들러와 달리 무조건 메인 스레드에서 생성하고 실행해야한다.

사용처

  1. 많은 데이터를 다운로드 할 필요가없는 간단한 네트워크 작업
  2. 몇 밀리 초 이상 걸릴 수있는 디스크 바운드 작업