[안드로이드 스튜디오] 비동기작업 수행하기 - AsyncTask
2021. 1. 26. 15:04ㆍ카테고리 없음
비동기작업 수행하기 - AsyncTask
클래스 "AsyncTask"
추상클래스 AsyncTask
AsyncTask<Paras, Progress, Result> - 제네릭 타입
public abstract class AsyncTask<Params, Progress, Result> {
// 모두 가변인자로 전달된다.
// Params : MainActivity에서 AsyncTask에 전달될 파라미터
// Progress : 현재 작업 진행 상태 값
// Result : 작업 실행 완료 후 최종 결과
}
private class Classname extends AsyncTask<String, Long, Boolean> {
/* AsyncTask의 백그라운드 thread가 실행되기 전에 메인 thread에 의해 호출되는 메소드 */
@Override
protected void onPreExecute() {
// UI 초기화 작업
}
/* 백그라운드에서 비동기 작업 수행 */
@Override
protected Boolean doInBackground(String... params) {
// UI 제어 x, publishProgress() 를 이용하여 데이터 전달
return null;
}
/* doInBackground(..) 에서 publishProgress()를 호출할 때 Main UI thread에서 실행할 onProgressUpdate() */
@Override
protected void onProgressUpdate(Long... values) {
// UI에 data set
}
/* doInBackground() 실행이 완료되어 리턴되었을 때 호출됨 */
@Override
protected void onPostExecute(Boolean result) {
}
}
MainActivity.java : 선언 및 execute()
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
/// ...
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
Classname task = new Classname(MainActivity.this) ; // AsyncTask를 상속받은 class
task.execute() ;
}
});
}
}
참고 : recipes4dev.tistory.com/174