안드로이드 AsyncTask 간략
Android 2015. 3. 5. 11:32백그라운드 작업을 위한 Handler, Thread를 관리해주는 클래스.
http://developer.android.com/reference/android/os/AsyncTask.html
3가지 generic 타입
<Params, Progress, Result>
순서대로보면 초기 파라메터 데이터 타입, 진행 데이터 타입, 결과값 데이터 타입
주요 메서드
void onPreExecute()
Result doInBackground(Params.. params)
void onProgressUpdate(Progress.. valuse)
void onPostExecute(Result result)
void onCancelled()
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
// URL 값을 파라메터로 받아 처리.
// 데이터를 여기서 처리.
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
// Integer타입 파라메터를 ProgressBar에 전달하여 현재 작업 상태를 보여줌.
// UI부분은 꼭! 여기서 처리.
//
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
// 결과값을 Long 타입으로 전달.
// 이 예제에서는 데이터를 다운받은 전체 데이터를 bytes 값으로 보여준다.
//
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}