AsyncTask 사용하기

황제낙엽 2018.10.29 05:55 조회 수 : 1974

AsyncTask란?

핸들러의 사용 없이 서브 스레드에서 바로 UI 작업을 가능케 해주는 것이 바로 AsyncTask이다

 

 

 

예제

public class MyAsyncTask extends AsyncTask<String, String, String> {

 

    @Override

    protected void onPreExecute() {

        super.onPreExecute();

    }

 

    @Override

    protected String doInBackground(String... strings) {

       String result; 

       String a = strings[0]

 

       //받아온 a를 통한 작업을 result에 담음

       return result;

    }

 

    @Override

    protected void onProgressUpdate(String... params) {

 

    }

 

    @Override

    protected void onPostExecute(String result) {

        super.onPostExecute(result);

    }

}

 

<String, String, String>

<doInBackground() 메서드의 리턴 타입, onProgressUpdate() 메서드에서 사용할 변수의 타입, onPostExecute() 메서드에서 사용할 변수의 타입이다.

 

① onPreExecute()

AsyncTask의 작업은 메인 스레드에서 MyAsyncTask.execute(); 이런 식으로 실행시키는데 이 코드가 실행되면 작업 전에 제일 먼저 onPreExecute() 메서드가 호출된다. 본격적인 작업에 앞서 준비 작업을 진행하는 곳이라고 보면 된다. 

 

② doInBackground()

메인 작업이 실행되는 곳. 이곳에서 실행된 결괏값은 result에 담아 리턴했다.

 

③ onProgressUpdate()

doInBackground() 작업 도중 publishProgress()를 호출하면 onPressUpdate() 가 실행된다.

사용자에게 진행 상황을 알릴 때 사용된다. (ex. Toast 메시지 : "현재 진행 중입니다.")

 

④ onPostExecute()

doInBackground()에서 리턴 한 값을 전달받아서 매개변수로 사용한다.

넘겨받은 result를 통해 UI 변경 작업을 진행한다.(ex setText(result))...

 

 

 

 

AsyncTask의 단점

1. 재사용이 불가능하다.

2. execute 한 Activity가 종료되어도, 별도의 지시가 없다면 AsyncTask는 종료되지 않고 계속 돌아감.

이 단점을 무시한 채 프로그래밍 한다면, 어마어마한 메모리 낭비를 경험할 수 있다

 
번호 제목 글쓴이 날짜 조회 수
128 PC를 위한 최고의 안드로이드 에뮬레이터 황제낙엽 2023.01.18 3136
127 [Jetpack Compose UI / 상추님] GDG Jetpack compose 코드랩 수료 후기 (feat. 굿즈) 황제낙엽 2022.12.24 2372
126 [Jetpack Compose UI / kyj1991719] compose - Compose 이해 황제낙엽 2022.12.24 4025
125 [Jetpack Compose UI / 꾸준] Compose 가 뭔데...? 황제낙엽 2022.12.24 4036
124 [Jetpack Compose UI / IIVIKI] Compose 학습과 분석 황제낙엽 2022.12.24 4050
123 [Jetpack Compose UI] 스터디 시작하기 황제낙엽 2022.12.24 4001
122 [개발하는 정대리] 취준생을 위한 안드로이드 앱만들기 - 바텀네비게이션 뷰, 네비게이션 AAC file 황제낙엽 2022.12.22 3882
121 [개발하는 정대리] 취준생을 위한 안드로이드 앱만들기 - 뷰바인딩 file 황제낙엽 2022.12.22 3852
120 [개발하는 정대리] 취준생을 위한 안드로이드 앱만들기 - 라이브데이터 뷰모델 file 황제낙엽 2022.12.21 3827
119 [대왕놀] ImageButton in Compose (IconButton) 황제낙엽 2022.12.20 4107
118 [대왕놀] compose instrumentation test tutorial 황제낙엽 2022.12.20 3986
117 [대왕놀] Switch in Compose 황제낙엽 2022.12.20 4106
116 [대왕놀] EditText in Compose (TextField) 황제낙엽 2022.12.20 4022
115 [대왕놀] margin in Compose 황제낙엽 2022.12.20 4105
114 [대왕놀] modifier in compose 황제낙엽 2022.12.20 4181
113 [대왕놀] Button in Compose file 황제낙엽 2022.12.20 4224
112 [대왕놀] TextView in Compose (Text) 황제낙엽 2022.12.20 4083
111 [대왕놀] ImageView in Compose (Image) 황제낙엽 2022.12.20 4019
110 [대왕놀] LinearLayout in Compose (Row, Column) 황제낙엽 2022.12.20 4114
109 [대왕놀] Introduction to Jetpack compose 황제낙엽 2022.12.20 3965