반응형
AsyncTask : doInBackground ()의 반환 값은 어디로 가나 요?
를 호출 할 때 AsyncTask<Integer,Integer,Boolean>
반환 값은 다음과 같습니다.
protected Boolean doInBackground(Integer... params)
?
일반적으로 AsyncTask를 시작 new AsyncTaskClassName().execute(param1,param2......);
하지만 값을 반환하지 않는 것 같습니다.
의 반환 값은 어디 doInBackground()
에서 찾을 수 있습니까?
그러면 결과 작업을 위해 재정의 할 수 있는 onPostExecute 에서 값을 사용할 수 있습니다.
다음은 Google 문서의 예제 코드 스 니펫입니다.
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
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));
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
class doInBackground()
의 get () 메서드를 호출하여 protected Boolean의 반환 값을 검색 할 수 있습니다 AsyncTask
.
AsyncTaskClassName task = new AsyncTaskClassName();
bool result = task.execute(param1,param2......).get();
그러나 get()
계산이 완료 될 때 까지 대기 하고 UI 스레드를 차단 하므로 UI의 응답성에주의하세요 .
내부 클래스를 사용하는 경우 onPostExecute (Boolean result) 메서드에서 작업을 수행하는 것이 좋습니다.
UI 만 업데이트하려는 경우 AsyncTask
두 가지 가능성을 제공합니다.
doInBackground()
(예 :을 업데이트 하려면) 메서드 내에서 ProgressBar
호출해야합니다 . 그런 다음 메서드 에서 UI를 업데이트해야합니다 .publishProgress()
doInBackground()
onProgressUpdate()
onPostExecute()
메서드 에서 수행해야합니다 . /** This method runs on a background thread (not on the UI thread) */
@Override
protected String doInBackground(String... params) {
for (int progressValue = 0; progressValue < 100; progressValue++) {
publishProgress(progressValue);
}
}
/** This method runs on the UI thread */
@Override
protected void onProgressUpdate(Integer... progressValue) {
// TODO Update your ProgressBar here
}
/**
* Called after doInBackground() method
* This method runs on the UI thread
*/
@Override
protected void onPostExecute(Boolean result) {
// TODO Update the UI thread with the final result
}
이렇게하면 반응 문제에 대해 신경 쓰지 않아도됩니다.
반응형
'Programing' 카테고리의 다른 글
Javascript로 GIF 애니메이션을 제어 할 수 있습니까? (0) | 2020.12.05 |
---|---|
새 노드가 DOM에 삽입 될 때 발생하는 jquery 이벤트가 있습니까? (0) | 2020.12.05 |
stdout 및 stderr를 다른 변수로 캡처 (0) | 2020.12.05 |
Eclipse :“ '주기적인 작업 공간 저장.' (0) | 2020.12.05 |
SDK Manager에서 Android 4.4W (API20)와 Android L (API20, L 미리보기)의 차이점은 무엇입니까? (0) | 2020.12.05 |