Asynctask <>에 전달되는 이유, 방법 및 매개 변수는 여기에서 자세히 알아 보십시오 . 최고의 설명이라고 생각합니다.
Google의 Android 문서에 따르면 다음과 같습니다.
비동기 작업은 Params, Progress 및 Result라는 3 가지 일반 유형과 onPreExecute, doInBackground, onProgressUpdate 및 onPostExecute라는 4 단계로 정의됩니다.
AsyncTask의 일반 유형 :
비동기 작업에 사용되는 세 가지 유형은 다음과 같습니다.
실행시 태스크에 전송되는 매개 변수의 유형 인 매개 변수. 진행률, 백그라운드 계산 중에 게시 된 진행률 단위의 유형입니다. 결과, 백그라운드 계산 결과의 유형입니다. 모든 유형이 항상 비동기 작업에서 사용되는 것은 아닙니다. 유형을 미사용으로 표시하려면 Void 유형을 사용하십시오.
private class MyTask extends AsyncTask<Void, Void, Void> { ... }
추가로 참조 할 수 있습니다 : http://developer.android.com/reference/android/os/AsyncTask.html
또는 Sankar-Ganesh의 블로그를 참조하여 AsyncTask의 역할을 지울 수 있습니다.
일반적인 AsyncTask 클래스의 구조는 다음과 같습니다.
private class MyTask extends AsyncTask<X, Y, Z>
protected void onPreExecute(){
}
이 메서드는 새 스레드를 시작하기 전에 실행됩니다. 입력 / 출력 값이 없으므로 변수 또는 필요한 작업을 초기화하십시오.
protected Z doInBackground(X...x){
}
AsyncTask 클래스에서 가장 중요한 메서드입니다. 백그라운드에서하고 싶은 모든 작업을 메인 스레드와 다른 스레드에 배치해야합니다. 여기에 입력 값으로 "X"유형의 개체 배열이 있고 (헤더에 표시됩니까? "... extends AsyncTask"가 있습니다. 입력 매개 변수의 TYPES입니다) 유형에서 개체를 반환합니다. "지".
protected void onProgressUpdate (Y y) {
}이 메서드는 publishProgress (y) 메서드를 사용하여 호출되며 일반적으로 백그라운드에서 수행중인 작업의 진행률을 표시하는 진행률 표시 줄과 같이 기본 화면에 진행률이나 정보를 표시하려는 경우에 사용됩니다.
보호 된 무효 onPostExecute (Z z) {
}이 메서드는 백그라운드에서 작업이 완료된 후 호출됩니다. 입력 매개 변수로 doInBackground 메소드의 출력 매개 변수를 수신합니다.
X, Y 및 Z 유형은 어떻습니까?
위의 구조에서 추론 할 수 있습니다.
X – The type of the input variables value you want to set to the background process. This can be an array of objects.
Y – The type of the objects you are going to enter in the onProgressUpdate method.
Z – The type of the result from the operations you have done in the background process.
외부 수업에서이 작업을 어떻게 부르나요? 다음 두 줄만 사용하면됩니다.
MyTask myTask = new MyTask();
myTask.execute(x);
여기서 x는 X 유형의 입력 매개 변수입니다.
작업이 실행되면 "외부"에서 상태를 확인할 수 있습니다. "getStatus ()"메소드 사용.
myTask.getStatus (); 다음 상태를받을 수 있습니다.
RUNNING-작업이 실행 중임을 나타냅니다.
PENDING-작업이 아직 실행되지 않았 음을 나타냅니다.
FINISHED-onPostExecute (Z)가 완료되었음을 나타냅니다.
AsyncTask 사용에 대한 힌트
onPreExecute, doInBackground 및 onPostExecute 메소드를 수동으로 호출하지 마십시오. 이것은 시스템에 의해 자동으로 수행됩니다.
다른 AsyncTask 또는 Thread 내에서 AsyncTask를 호출 할 수 없습니다. 메소드 execute의 호출은 UI 스레드에서 수행되어야합니다.
onPostExecute 메서드는 UI 스레드에서 실행됩니다 (여기서는 다른 AsyncTask를 호출 할 수 있습니다!).
작업의 입력 매개 변수는 Object 배열이 될 수 있습니다. 이렇게하면 원하는 객체와 유형을 넣을 수 있습니다.