AsyncTask 사용하기

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

sitelink1 https://m.blog.naver.com/contrazant/221331452854 
sitelink2  
sitelink3  

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는 종료되지 않고 계속 돌아감.

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

 
번호 제목 글쓴이 날짜 조회 수
68 TTS 를 위한 스마트폰 설정 및 TTS 샘플 file 황제낙엽 2019.02.16 460
67 Creating swipe views with tabs file 황제낙엽 2019.02.10 102
66 [번역] 안드로이드 ViewPager 를 이용한 수평 화면 전환 file 황제낙엽 2019.02.09 71
65 동적 레이아웃 생성과 자동 줄바꿈 구현 file 황제낙엽 2018.12.26 311
64 qemu-system-~.exe 의 작동이 중지되었습니다 file 황제낙엽 2018.11.27 55
63 Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'. file 황제낙엽 2018.11.27 59
62 Error:Minimum supported Gradle version is 4.1. 황제낙엽 2018.11.27 84
61 No toolchains found in the NDK toolchains folder for ABI 황제낙엽 2018.11.27 33
60 [성공샘플] HttpURLConnection 을 이용하여 JSON 데이터 보내기 예제 황제낙엽 2018.11.10 649
59 [Android] 네이버 음성합성(TTS) API 사용해 보기 file 황제낙엽 2018.11.01 167
58 [Android] TTS (Text To Speech) API 샘플 코드 file 황제낙엽 2018.11.01 128
57 Google Cloud API 설정법 file 황제낙엽 2018.11.01 39
» AsyncTask 사용하기 황제낙엽 2018.10.29 36
55 Volley 소개 및 관련 링크 황제낙엽 2018.10.29 63
54 AsyncTask 를 이용한 HttpURLConnection 사용법 [1] 황제낙엽 2018.10.20 33
53 HttpURLConnection 을 이용하여 JSON 데이터 보내기 예제 [1] file 황제낙엽 2018.10.20 102
52 STT 학습 링크 모음 (sample link) 황제낙엽 2018.10.11 552
51 코틀린(Kotlin) 학습용 링크 모음 황제낙엽 2018.10.11 64
50 저장소 파일 불러올 때 권한 요청 설정 file 황제낙엽 2018.08.21 55
49 안드로이드 파일시스템에 파일 생성하여 데이터 저장, 불러오기 예제 황제낙엽 2018.08.21 58