[안드로이드 스튜디오] 비동기작업 수행하기 - 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