728x90
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
'Android' 카테고리의 다른 글
[안드로이드] TabLayout과 ViewPager 사용 (0) | 2020.08.23 |
---|---|
[안드로이드 JetPack] 데이터 바인딩 (0) | 2020.08.23 |
[안드로이드] View가 그려지는 과정 (0) | 2020.08.23 |
[안드로이드] Parcelable (0) | 2020.08.22 |
[안드로이드] ANR (0) | 2020.08.22 |
댓글