반응형

이 게시물은 다음 링크를 참조하여 학습했습니다.

 

안드로이드 AsyncTask. (Android AsyncTask)

1. 비동기 작업을 위한 AsyncTask. [안드로이드 프로그래밍. 스레드.]의 여러 글들을 통해, 안드로이드에서 스레드를 사용해야 하는 이유와 새로운 스레드를 실행하는 방법, 그리고 핸들러를 통한

recipes4dev.tistory.com

이번 시간은 AsyncTask를 정리하려한다.

1. AsyncTask

AsyncTask를 간단하게 설명하면,

저번에 했던 Thread, Runnable, Handler 클래스를 이용해서 스레드 통신을 구현한 내용을 AsyncTask라는 클래스가 갖고 있다.

그래서 실제로 코딩을 해보니 코드의 내용이 체감상 절반 이하로 줄었다.

AsyncTask가 갖고있는 메서드 중 일반적으로 4개의 메서드를 오버라이드한다.

메서드와 하는 역할은 다음과 같다.

onPreExecute() : 작업이 실행되기 직전에 UI 스레드에 의해 호출. 초기화 작업 역할

doInBackground(Object[] objects) : onPreExecute()가 호출된 후, 백그라운드 스레드에서 호출된다. AsyncTask가 수행할 실질적인 작업 실행 코드

onProgressUpdate(Object[] values) : doInBackground()에서 publishProgress()를 호출하면, UI스레드에서 호출된다. 작업 진행 상태를 화면에 갱신 역할

onPostExecute(Object o) : 백그라운드 스레드의 모든 실행이 완료되면 UI스레드에서 호출되는 메서드.

2. 소스코드

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
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        NewAsyncTask task = new NewAsyncTask();
        task.execute();
    }
 
    private class NewAsyncTask extends AsyncTask{
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }
 
        @Override
        protected void onProgressUpdate(Object[] values) {
            super.onProgressUpdate(values);
        }
 
        @Override
        protected void onPostExecute(Object o) {
            super.onPostExecute(o);
        }
 
        @Override
        protected Object doInBackground(Object[] objects) {
            return null;
        }
    }
cs

 

반응형

+ Recent posts