안드로이드/Android AsyncTask 사용법
안드로이드 AsyncTask 사용법에 대해 알아 보겠습니다. 안드로이드에는 UI 를 총괄하는 메인Thread가 존재 한고 있는데요.([안드로이드/Android Android에서 Thread(쓰레드) 란 무엇 인가?]) 메인Thread 외에는 일반Thread들이 안드로이드 UI 화면을 처리할 수 없습니다. 그렇기 때문에 메인Thread와 일반Thread 를 잘 핸들링 해서 사용해야 하는데, 여간 번거로운 일이 아닙니다.
그렇기 때문에, Android 에서는 AsyncTask 라는 객체를 지원하는데요. AsyncTask는 UI 처리 및 Background 작업 등 을 하나의 클래스에서 작업 할 수 있게 지원해 줍니다. 쉽게말해 메인Thread와 일반Thread를 가지고 Handler를 사용하여 핸들링하지 않아도 AsyncTask 객체하나로 편하게 UI를 수정 할 수 있고, Background 작업을 진행 할 수 있습니다. 각각의 주기마다 CallBack 메서드를 사용해서 말이죠.
큰 장점입니다.
자 그럼 예제 소스를 살펴 볼까요?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | 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, void ,= "" string= "" > { @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()] 순서가 됩니다.
'Programming > Android' 카테고리의 다른 글
Android uid 위치 (linux에서의 /etc/passwd 대신) (0) | 2017.07.15 |
---|---|
Intent 보내기 제한 (restriction) of Android (0) | 2017.06.26 |
adb unauthorized issue (0) | 2016.07.21 |
com.android.internal ... (0) | 2016.03.16 |
registerReceiver (0) | 2016.03.16 |