안드로이드 AsyncTask 사용법에 대해 알아 보겠습니다. 안드로이드에는 UI 를 총괄하는 메인Thread가 존재 한고 있는데요.([안드로이드/Android Android에서 Thread(쓰레드) 란 무엇 인가?]) 메인Thread 외에는 일반Thread들이 안드로이드 UI 화면을 처리할 수 없습니다. 그렇기 때문에 메인Thread와 일반Thread 를 잘 핸들링 해서 사용해야 하는데, 여간 번거로운 일이 아닙니다.
그렇기 때문에, Android 에서는 AsyncTask 라는 객체를 지원하는데요. AsyncTask는 UI 처리 및 Background 작업 등 을 하나의 클래스에서 작업 할 수 있게 지원해 줍니다. 쉽게말해 메인Thread와 일반Thread를 가지고 Handler를 사용하여 핸들링하지 않아도 AsyncTask 객체하나로 편하게 UI를 수정 할 수 있고, Background 작업을 진행 할 수 있습니다. 각각의 주기마다 CallBack 메서드를 사용해서 말이죠.
큰 장점입니다.
자 그럼 예제 소스를 살펴 볼까요?
package
arabiannight.tistory.com.aynctask;
import
android.app.Activity;
import
android.os.AsyncTask;
import
android.os.Bundle;
import
android.util.Log;
public
class
TestAsyncTaskActivity
extends
Activity {
private
MyAsyncTask myAsyncTask;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
myAsyncTask =
new
MyAsyncTask();
myAsyncTask.execute(
"80"
,
"90"
,
"100"
,
"110"
);
}
// AsyncTask클래스는 항상 Subclassing 해서 사용 해야 함.
// 사용 자료형은
// background 작업에 사용할 data의 자료형: String 형
// background 작업 진행 표시를 위해 사용할 인자: Integer형
// background 작업의 결과를 표현할 자료형: Long
// 인자를 사용하지 않은 경우 Void Type 으로 지정.
public
class
MyAsyncTask
extends
AsyncTask<string, string=
""
void
,=
""
> {
@Override
protected
void
onPreExecute() {
super
.onPreExecute();
}
@Override
protected
String doInBackground(String... params) {
String sum =
""
;
if
(params !=
null
){
for
(String s : params){
sum += s;
}
}
return
sum;
}
@Override
protected
void
onPostExecute(String result) {
super
.onPostExecute(result);
if
(result !=
null
){
Log.d(
"ASYNC"
,
"result = "
+ result);
}
}
@Override
protected
void
onCancelled() {
super
.onCancelled();
}
}
}
//</string,>
1. onPreExecute() : Background 작업 시작전에 UI 작업을 진행 한다.
@Override |
2. doInBackground() : Background 작업을 진행 한다.
@Override |
3. onPostExecute() : Background 작업이 끝난 후 UI 작업을 진행 한다.
@Override |
FLOW를 살펴 보자면,
[onPreExecute()] -> [doInBackground()] -> [onPostExecute()] 순서가 됩니다.
더욱 자세한 설명은 아래의 사이트에서 확인 하시기 바랍니다.
출처 및 자세한 설명 : http://tigerwoods.tistory.com/28
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 - GCM이용시 com.google.android.gms import 에러 해결법 (2) | 2013.12.22 |
---|---|
안드로이드 - GCM 활용해서 푸시 메세지 전송기 (0) | 2013.12.22 |
안드로이드 - XmlPullParser 사용시 유의법(규칙) (0) | 2013.12.18 |
안드로이드 - ImageDownloader 분석 (0) | 2013.12.07 |
안드로이드 - listView 항목에 Audio Albumart(thumbnail)을 지연 없이 나타내기 LinkedHashMap과 SoftReference사용 [캐시 처리] (0) | 2013.12.07 |
안드로이드 - HashMap,HashTable,LinkedHashMap,ConcurrentHashMap (0) | 2013.12.05 |
안드로이드 - Android Handler 와 Timer(TimerTask) 를 활용한 Intro 화면 구성 (0) | 2013.12.05 |
안드로이드 - Bitmap OutOfMemoryError 해결책 (0) | 2013.12.05 |