본문 바로가기
Android

[안드로이드] AsyncTask

by Sky Titan 2020. 8. 22.
728x90
 

AsyncTask  |  Android 개발자  |  Android Developers

 

developer.android.com

AsyncTask

  • 안드로이드에서 작업을 백그라운드 스레드에서 실행할 수 있게 해준다.
  • UI 스레드와 동기화하여 업데이트를 보고하고, 프로세스 처리가 완료되면 다시 보고하는 패턴을 가지고 있다.
  • 추상 클래스이므로 상속받는 서브 클래스를 생성해서 사용
  • API 30에서부턴 deprecated

 

Generic Type

AsyncTask <Params, Progress, Result>

타입 이름 설명
Params - doInBackground 메서드에 입력 파라미터로 들어갈 값들의 type

- 메인 스레드에서 execute() 메서드의 입력 파라미터 값
Progress - 백그라운드 작업 수행 도중 호출되는 onProgressUpdate 메서드의 입력 파라미터 타입이다.
Result - doInBackground 메서드가 작업 수행 완료 후 반환하는 값의 타입

- onPostExecute 메서드의 입력 파라미터 값의 타입이다.

 

package org.techtown.test;

import android.os.AsyncTask;

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

    //UI 스레드와 동기화된다.
    //백그라운드 스레드에서 작업이 실행되기 전 호출됨 -> 작업 시작을 알리는 UI 업데이트 작업 진행
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    //백그라운드 스레드에서 작업 실행
    //publishProgress() 메서드를 호출하여 onProgressUpdate() 메서드 호출 및 사용
    //onPostExecute로 전달될 값을 반환한다.
    @Override
    protected String doInBackground(String... strings) {
        return null;
    }
    
    //UI 스레드와 동기화된다.
    //백그라운드 스레드 작업 완료 이후 호출됨 -> 작업 완료를 알리는 UI 업데이트 작업 진행
    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
    }

    //UI 스레드와 동기화된다.
    //백그라운드 작업 진행 도중 publishProgress가 호출되면 호출되는 메서드
    //작업 진행 상황을 알려주는 UI 업데이트 작업을 실시간으로 진행할 때 사용
    @Override
    protected void onProgressUpdate(Integer... values) {
        super.onProgressUpdate(values);
    }
    
}

 

public class MainActivity extends AppCompatActivity {

  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyAsyncTask asyncTask = new MyAsyncTask();
        asyncTask.execute("넘길 String 값"); //실행

    }
}
728x90

댓글