반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

멋진 개발자가 되고 싶다

[Android] AsyncTask란 무엇일까? 본문

Android

[Android] AsyncTask란 무엇일까?

오패산개구리 2021. 8. 2. 12:47
728x90
반응형

 

 

(exoplayer 코드 분석을 하던 Asynctask라는 클래스를 발견했고 클래스가 어떤 역할을 하는지를 알아보고 간단하게 정리한 글)

 

 

 

앱을 실행하면 메인 스레드에서 코드를 한 줄 한 줄 실행을실행을 시키면서 나아간다.

 

그러다 만약 asset에서 많은 양의 데이터를 리스트로 읽어들이는 코드가 있다고 하자.

 

데이터의 양이 많아서 줄에서 분이고 코드가 앞으로 나아가지 않고 정체되어 있다면

 

앱을 사용하는 사람 입장에선 난감할 것이다

 

 

따라서 이때 Asynctask라는 클래스를 사용한다.

 

asynchronous는 "비동기적인"이라는뜻으로

 

메인 스레드가 실행되는 동안 Asynctask에서는 서브 스레드를 돌려서 작업을 수행한다.

 

그리고 작업이 끝나면 결과값을 메인 스레드로 보내준다.

 

우선 AsyncTask 추상 클래스로, AsyncTask 상속한 클래스를 생성해야 하고

 

제네릭 클래스로클래스로 AsyncTask<Params, Progress, Result> 형식을 갖기 때문에

 

ex) AsyncTask<String, Void, List <PlaylistGroup>>

 

Params : AsyncTask 실행에 필요한 데이터

Progress : 현재 작업 진행 정보를 나타내는 상황 값

Result : 작업 실행 완료 최종 결과

 

맞춰서 넣어줘야 한다.

 

 

 

 

실행 단계는 4단계로

 

OnPreExecute -> doInBackground -> onProgressUpdate -> onPostExecute 순이라 있다.

 

 

 

 

 

 

 

제일 중요한 단계는 doInBackground()인데

 

여기서 백그라운드 스레드로 호출이 된다.

 

첫 번째 타입이 인자로 들어가고 마지막 타입이 리턴 값이 된다.

 

백그라운드에서 동작시키고 싶은 코드를 여기에다 입력해주면 된다.

728x90
반응형