이전 포스팅 주제
이전 포스팅에서는 안드로이드에서 스레드를 생성하고 Runnable, Handler를 사용하는 방법에 대해 알아보았었습니다.
2023.07.23 - [Android] - [안드로이드] 스레드 생성 및 활용 - 1
오늘은 AsyncTask를 통해 비동기 처리하는 방법에 대해 알아보도록 하겠습니다.
추가로 스레드 풀이란 무엇인지 알아보겠습니다.
AsyncTask란?
AsyncTask는 UI 스레드와 백그라운드 스레드 간의 통신을 쉽게 구현하기 위한 안드로이드에서 제공하는 클래스입니다.
AsyncTask는 백그라운드 작업, 진행 상태 업데이트, 결과 반환 등을 처리할 수 있습니다.
AsyncTask 사용 간단 예제
AsyncTask를 사용하여 백그라운드 작업을 처리하는 간단한 예제입니다.
private class MyTask extends AsyncTask<Void, Integer, String> {
@Override
protected void onPreExecute() {
// 백그라운드 작업 전에 실행되는 코드
// ...
}
@Override
protected String doInBackground(Void... voids) {
// 백그라운드 작업 수행
// ...
return "작업 완료";
}
@Override
protected void onPostExecute(String result) {
// 백그라운드 작업 완료 후 실행되는 코드
// 결과 처리
// ...
}
}
// AsyncTask 실행
MyTask task = new MyTask();
task.execute();
위의 예제에서는 AsyncTask를 상속받은 MyTask 클래스를 정의하여 백그라운드 작업을 처리합니다. doInBackground 메서드에서 실제 작업을 수행하고, onPostExecute 메서드에서 작업 결과를 처리합니다. execute 메서드를 호출하여 AsyncTask를 실행합니다.
이처럼 AsyncTask를 사용하면 내가 원하는 작업을 비동기적으로 실행한 후 실행이 완료된 시점까지도 핸들링 할 수 있습니다.
프로그램 설치시 순차적으로 증가하는 프로그래스바와 같은 기능들을 이러한 AsyncTask를 사용하면 쉽게 구현할 수 있습니다.
스레드 풀이란?
스레드 풀(Thread Pool)은 미리 생성된 스레드들의 집합으로, 스레드를 반복적으로 생성하고 삭제하는 비용을 줄이고 작업을 효율적으로 관리할 수 있는 방법입니다.
안드로이드에서는 ExecutorService 인터페이스를 구현한 ThreadPoolExecutor 클래스를 사용하여 스레드 풀을 구현할 수 있습니다.
스레드 풀을 사용하면 필요한 작업을 큐에 넣고 스레드 풀이 할당된 스레드에서 순차적으로 처리할 수 있습니다.
스레드 풀은 멀티스레드 환경에서 동시에 실행되는 작업의 수를 제어하고, 스레드를 재사용하여 효율적인 작업 처리를 가능하게 합니다.
안드로이드에서는 스레드, Runnable, Handler, AsyncTask, 스레드 풀 등 다양한 도구를 활용하여 백그라운드 작업을 처리하고, UI와의 상호작용을 향상시킬 수 있습니다.
이를 통해 안드로이드 애플리케이션의 성능과 사용자 경험을 개선할 수 있습니다.
다음 포스팅에서는 스레드 풀을 활용한 스레드 예제들을 알아보도록 하겠습니다.